else if(Close[i+1] < Open[i+1]) order_line = -5;
Не надо так писать без цикла и с неинициализированной i.
Задавайте конкретный номер бара.
Мне нужно было создать робот для бинарных опционов по своему индикатору. Нашел шаблон и адаптировал его под индикатор, но есть проблема, он периодически дублирует ордера (то есть появляется сигнал на BUY, он открывает ордер на BUY и через несколько секунд открывает еще один BUY, а то и не один. то есть получается по два ордера на разных уровнях).
Подскажите что не так, вроде лишнего то ни че нету...
//Пример
if(Close[i+1] > Open[i+1]) order_line = 5;
else if(Close[i+1] < Open[i+1]) order_line = -5;
else order_line = 0;
//##########################################################
Вечно все цепляются не за то, я написал это пример кода. В реале не будет не цикла не i
А чтобы не цеплялись, не нужно писать чушь в коде ;)
Тут не знает никто, что вы там на самом деле написали с индикатором, если подменять код, то хоть на "условно рабочий".
У Вас лишнее в том, что сделка будет открываться по каждому тику, если условие входа по индикатору выполняется. Можно, например, если функция OrderSend выполнена успешно, запрашивать время открытия ордера и ставить доп. условие, что с момента открытия предыдущей сделки должно пройти время не менее PeriodSeconds(_Period). Опять-таки это все условно, т. к. я не знаю Ваши правила входа по индикатору, если вход, например, по стрелочному индикатору, того, что я пишу достаточно.
Пожалуйста корректно высказывайте свои мысли и не допускайте оскорблений и бранных слов. Посты будут сносится начисто.
Это конечно хорошая вещь в целом.
Только фразы Vitalie Postolache можно назвать верхом тактичности и вежливости по сравнению с постами от некоторых других. Для сравнения: https://www.mql5.com/ru/forum/3457/page3448#comment_3873161

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Мне нужно было создать робот для бинарных опционов по своему индикатору. Нашел шаблон и адаптировал его под индикатор, но есть проблема, он периодически дублирует ордера (то есть появляется сигнал на BUY, он открывает ордер на BUY и через несколько секунд открывает еще один BUY, а то и не один. то есть получается по два ордера на разных уровнях).
Подскажите что не так, вроде лишнего то ни че нету...
//| Option.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link "http://www.forexsystems.biz"
#property description "Simple expert advisor"
// Переменные индикатора
int i;
double order_line;
//--- Inputs
extern double Lot = 50.0; // ставка в валюте
extern string Expiration = "1"; // время истечения в минутах
extern int Magic = 1988; // магик
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
Comment("");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
//##########################################################
// ТУТ ПРОПИСЫВАЮ КОД ИНДИКАТОРА ДЛЯ ОТКРЫТИЯ СДЕЛОК
//Пример
if(Close[i+1] > Open[i+1]) order_line = 5;
else if(Close[i+1] < Open[i+1]) order_line = -5;
else order_line = 0;
//##########################################################
//+------------------------------------------------------------------+
//| Система открытия ордеров |
//+------------------------------------------------------------------+
int res;
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
double bid=MarketInfo(OrderSymbol(),MODE_BID);
//--- buy
if(order_line == 5)
{
res=OrderSend(Symbol(),OP_BUY,Lot,ask,0,0,0,Expiration,Magic,0,Blue);
return;
}
//--- sell
if(order_line == -5)
{
res=OrderSend(Symbol(),OP_SELL,Lot,bid,0,0,0,Expiration,Magic,0,Red);
return;
}
//---
}
//+------------------------------------------------------------------+