[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 426

 
Legeo777:

Пожалуйста помогите понять что не так:

//+------------------------------------------------------------------+

//| AAAA.mq4 |

//| |

//| |

//+------------------------------------------------------------------+

#property copyright ""

#property link ""


extern string TimeStart = "00:00"; //Время начала контрольного периода

extern string TimeEnd = "00:00"; //Время окончания контрольного периода


extern double LOT = 0.01; // лот

extern int Magic = 777; // маджик



double marga,Lot,SL,TP; // Введены переменные маржа,лот, стоп лосс и тейк профит

int Total,Orders,tipOrders,TradeDey; // введены переменные тип, ордера, тип ордеров,торговый день.


//+---------------------------------------------------------------------------------------------------------------------------------------+

//| функции эксперта |

//+---------------------------------------------------------------------------------------------------------------------------------------+

int start() // Функция инициализации старт

{

datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")); // Стартовые параметры//

datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeEnd, ":00")); // Параметры окончания//



Total=0; // Если нет ордеров

for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордеров

{

if (OrderSelect(i-1,SELECT_BY_POS)==false) // Если нет рыночных ордер

{

if //Если: - убрать
{

int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); //поиск бара начала контрольного периода на м1

int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //поиск бара окончания контрольного периода на м1

double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //наибольшее значение цены за промежуток

double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW, BarStart-BarEnd,BarEnd)); //наименьшее значение цены за промежуток

}

if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // Графические настройки отображения

{

ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0);

ObjectSet ("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);

ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);

}

if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //условия постановки отложенного ордер BUY - нельзя выставлять отложенные по Аску или Биду

NormalizeDouble(Ask + Max_Price - Min_Price,Digits),"UPDD",Magic,Blue);

if (Bid>Max_Price)

Comment("Невозможно выставить отложенный ордер на БАЙ");

if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //условия постановки отложенного ордер SELL - то же

NormalizeDouble(Ask + Max_Price-Min_Price,Digits),"UPDD",Magic,Blue);

if (Bid<Max_Price) - здесь, наверное, ошибка

Comment("Невозможно выставить отложенный ордер на СЕЛЛ");

}

} - добавить

return;

}

Не могу скомпилировать. а так вообще он должен выставлять два отложенных ордера вверх и вниз от диапазона.

После исправлений компилить должен, но работать скорее всего не будет - неправильно заданы времена, ненормализованы цены, нет проверки на близость стопов к ценам открытия.
 
Знающие, будьте любезны скажите как в отложенном ордере написать время существования до 23.59, т.е если ордер выставился советником то он бы просуществовал до 23,59 текущего дня
 
stater:
Знающие, будьте любезны скажите как в отложенном ордере написать время существования до 23.59, т.е если ордер выставился советником то он бы просуществовал до 23,59 текущего дня
datime exp=iTime(Symbol(),PERIOD_D1,0)+23*60*60+59*60;
 
Sepulca:


Спасибо огромное!Может еще подскажите, а сколько в одном терминале может работать советников, открыл 5 графиков EURUSD кинул на них 5 разных советников, но в журнале показывается работа только первого...хотя рожицы на всех улыбаются

 

Подскажите как разумней будет сделать ММ, по условию 0.1 лота на каждую 1000 баланса.

Что тут разумней использовать, AccountBalance или AccountEquity?

 

Доброго дня,

Существует ли команда, которую можно было бы добавить в скрипт (код которого - "OrderSend(Symbol(),OP_BUYSTOP..."), чтобы скрипт исполнился на всех открытых графиках?

 
sss2019:

Подскажите как разумней будет сделать ММ, по условию 0.1 лота на каждую 1000 баланса.

Что тут разумней использовать, AccountBalance или AccountEquity?


Без разницы, если открываете один ордер, то в момент открытия они равны, а если много, то одной формулы мало.
 
stater:

Спасибо огромное!Может еще подскажите, а сколько в одном терминале может работать советников, открыл 5 графиков EURUSD кинул на них 5 разных советников, но в журнале показывается работа только первого...хотя рожицы на всех улыбаются



На разных валютных парах будут работать, даже если это один и тот же советник. В одном графике точно только один. А вот на разных графиках одной и той же валютной пары даже не знаю.....
 
Roger:

Без разницы, если открываете один ордер, то в момент открытия они равны, а если много, то одной формулы мало.


Просто я думал что если ордеров уже открыто несколько и они в просадке, то лот нужно рассчитывать по эквити, иначе если рассчитать по балансу, то лот может выйти слишком большим, и не хватит средств для открытия.

Покажите пожалуйста пример рассчета, подобного, для 1000 депозита 0.1 лота

 
Roger Спасибо Вам ОГРОМНОЕ!!!!!
Причина обращения: