ЗДРАВСТВУЙТЕ УВАЖАЕМЫЙ AM2.
МОЖНО ЛИ НАПИСАТЬ СОВЕТНИК ПО СЛЕДУЮЩЕМ ПАРАМЕТРАМ
1 СОВЕТНИК БУДЕТ РАБОТАТЬ НА РЕНКО ГРАФИКАХ
2 СОВЕТНИК РАБОТАЕТ ПО Close[1]>Open[1] && Close[2]<Open[2] НА ПОКУПКУ И ПРОДАЖУ И Close[1]<Open[1] && Close[2]>Open[2] НА ПОКУПКУ И ПРОДАЖУ
3 ЕСЛИ ОДИН ОРДЕР ЗАКРЫЛСЯ ПО КЛОСЕ РЕВЕРС С УБЫТКОМ (ЗАКРЫВАТЬ ОРДЕРА ПО ВСТРЕЧНОМУ СИГНАЛУ) ТО НА СЛЕДУЮЩЕМ БАРЕ ОПЯТЬ ОТКРЫВАЕМ 2 ОРДЕРА НО ТОТ ОРДЕР КОТОРЫЙ ЗАКРЫЛСЯ С УБЫТКОМ УМНОЖАЕМ НА ЛОТ ЭКСПОНЕНТ.
4 СОВЕТНИК ДОЛЖЕН ЗАКРЫВАТЬ ОРДЕРА ПО ВСТРЕЧНОМУ СИГНАЛУ
5 СОВЕТНИК МАРТИНГЕЙЛ
6 СТОПЛОСС 200 ПУНКТОВ 5 ТИ ЗНАК
7 ТЕЙК ПРОФИТ ПО УМОЛЧАНИЮ
ПРИМЕРНЫЙ ВАРИАНТ
Я ТАК ПОЛОГАЮ НАДО ПРИСВОИТЬ ОРДЕРАМ ТИКЕТ
//+------------------------------------------------------------------+
//| 10 ПУНКТОВ .mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
extern string общие_параметры = "";
extern int stoploss = 300, //стоплосс
takeprofit = 100, //тейкпрофит
MaxOrders = 10; //максимальное кол-во ордеров одновременно на счете
extern double Lots = 0.1; //объем ордера
extern double LotExponent = 2; //множитель для увеличения следующего лота в случае если сделка будет убыточной
extern int Slip = 0; //проскальзывание цены
//extern int TrailingStop = 0; //трейлингстоп, если 0, то нет трейлинга
//extern int NoLoss = 0; //перевод в безубыток, если 0, то нет перевода в безубыток
extern bool CloseRevers = true; //закрывать ордера при встречном сигнале
extern int Magic = 56789;
//+--------------ФИЛЬТР_ВРЕМЯ----------------------------------------------------+
extern string ФИЛЬТР_ВРЕМЯ="";
extern int TimeStart = 0 , //начало работы
TimeEnd = 24; // конец работы
//+------------------------------------------------------------------+
//|ПЕРЕМЕННЫЕ ДЛЯ ЛОТ ЭКСПОНЕНТ |
//+------------------------------------------------------------------+
double SL,// SL выбранного ордера
TP; // TP выбранного ордера
int TimeBar,STOPLEVEL;
int time = 0;
bool Trade;// ПЕРЕМЕННАЯ ДЛЯ ВРЕМЕНИ
//--------------------------------------------------------------------
//--------------ФУНКЦИЯ РАСЧЕТА ИНДИКАТОРОВ---------------------------
//--------------------------------------------------------------------
int start()
{
int TekHour = Hour();
if ( TimeStart < TimeEnd && TekHour >= TimeStart && TekHour < TimeEnd ) Trade=true;
else
{
if ( TimeStart > TimeEnd && (TekHour >= TimeStart || TekHour < TimeEnd)) //торговля ночью
{
Trade=true;
}
else
{
Trade=false;Comment("Торговля запрещена по времени");
}
}
STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
// if (TrailingStop>=STOPLEVEL) TrailingStop();
// if (NoLoss>=STOPLEVEL) NoLoss();
if (TimeBar==Time[0]) return(0);
// значение индикатора
//--------------------------------------------------------------------
//--------------ФУНКЦИЯ ТОРГОВЛИ--------------------------------------
//--------------------------------------------------------------------
//----------------УСЛОВИЕ НА ПОКУПКУ----------------------------------------------------
if ( Close[1]>Open[1] && Close[2]<Open[2] )// &&>Pip1 Pip11&&
{
if (CloseRevers) CLOSEORDER(OP_SELL);
if (CloseRevers) CLOSEORDER(OP_BUY);
if (MaxOrders>OrdersTotal() && Trade)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Bid - stoploss*Point,Digits); else SL = 0;
if (OrderSend(Symbol(),OP_BUY, Lots(),NormalizeDouble(Ask,Digits),Slip,SL,TP,"10 ПУНКТОВ СКАЛЬПЕР",Magic,0,Blue)!=-1) TimeBar=Time[0];
//----------------УСЛОВИЕ НА ПРОДАЖУ----------------------------------------------------
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Ask + stoploss*Point,Digits); else SL = 0;
if (OrderSend(Symbol(),OP_SELL,Lots(),NormalizeDouble(Bid,Digits),Slip,SL,TP,"10 ПУНКТОВ СКАЛЬПЕР",Magic,0,Red)!=-1) TimeBar=Time[0];
}
}
//----------------УСЛОВИЕ НА ПРОДАЖУ----------------------------------------------------
if ( Close[1]<Open[1] && Close[2]>Open[2] )//&& <Pip2 Pip12&&
{
if (CloseRevers) CLOSEORDER(OP_BUY);
if (CloseRevers) CLOSEORDER(OP_SELL);
if (MaxOrders>OrdersTotal() && Trade)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Ask + stoploss*Point,Digits); else SL = 0;
if (OrderSend(Symbol(),OP_SELL,Lots(),NormalizeDouble(Bid,Digits),Slip,SL,TP,"10 ПУНКТОВ СКАЛЬПЕР",Magic,0,Red)!=-1) TimeBar=Time[0];
//----------------УСЛОВИЕ НА ПОКУПКУ----------------------------------------------------
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Bid - stoploss*Point,Digits); else SL = 0;
if (OrderSend(Symbol(),OP_BUY, Lots(),NormalizeDouble(Ask,Digits),Slip,SL,TP,"10 ПУНКТОВ СКАЛЬПЕР",Magic,0,Blue)!=-1) TimeBar=Time[0];
}
}
return(0);
}
//+------------------------------------------------------------------------------------
//+---------------ФУНКЦИЯ ЗАКРЫТИЯ ОРДЕРОВ---------------------------------------------
//+------------------------------------------------------------------------------------
void CLOSEORDER(int ord)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if (OrderType()==OP_BUY && ord==OP_BUY)
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,CLR_NONE);
if (OrderType()==OP_SELL && ord==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,CLR_NONE);
}
}
}
}
//--------------------------------------------------------------------
//------------ФУНКЦИЯ МАРТИНГЕЙЛА-------------------------------------
//--------------------------------------------------------------------
double Lots()
{
double lot = Lots ;
int total = OrdersHistoryTotal();
for (int i = 0; i < total; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderProfit() > 0)
{
lot = Lots ;
}
else
{
lot = lot * LotExponent ;
}
}
}
return(lot);
}
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------
/*
void TrailingStop()
{
int tip,Ticket;
double StLo,OSL,OOP;
for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS))
{ tip = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
Ticket = OrderTicket();
if (tip==OP_BUY)
{
StLo = NormalizeDouble(Bid-TrailingStop*Point,Digits);
if (StLo > OSL && StLo > OOP)
{ if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))
Print("TrailingStop Error ",GetLastError()," buy SL ",OSL,"->",StLo);
}
}
if (tip==OP_SELL)
{
StLo = NormalizeDouble(Ask+TrailingStop*Point,Digits);
if (StLo > OOP || StLo==0) continue;
if (StLo < OSL || OSL==0 )
{ if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))
Print("TrailingStop Error ",GetLastError()," sell SL ",OSL,"->",StLo);
}
}
}
}
}
}
//--------------------------------------------------------------------
//-----------ФУНКЦИЯ БЕЗУБЫТКА----------------------------------------
//--------------------------------------------------------------------
void NoLoss()
{
int tip,Ticket;
double StLo,OSL,OOP;
for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS))
{ tip = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
Ticket = OrderTicket();
if (tip==OP_BUY)
{
if (OSL>OOP) continue;
StLo = NormalizeDouble(OOP+Point,Digits);
if (NormalizeDouble((Bid-OOP)/Point,0)>=NoLoss)
{ if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))
Print("NoLoss Error ",GetLastError()," buy SL ",OSL,"->",StLo);
}
}
if (tip==OP_SELL)
{
if (OSL<OOP) continue;
StLo = NormalizeDouble(OOP-Point,Digits);
if (NormalizeDouble((OOP-Ask)/Point,0)>=NoLoss)
{ if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))
Print("NoLoss Error ",GetLastError()," sell SL ",OSL,"->",StLo);
}
}
}
}
}
}
//+------------------------------------------------------------------------------------+
//+---------------КОНЕЦ- КТО СМОТРЕЛ КОД, ТОТ МОЛОДЕЦ----------------------------------+
//+------------------------------------------------------------------------------------+
*/
Комментарии (6)
35 AM2 Сообщений: 16388 - Андрей
15 div15 Автор Сообщений: 71 - div15
35 AM2 Сообщений: 16388 - Андрей
15 div15 Автор Сообщений: 71 - div15
35 AM2 Сообщений: 16388 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий