Oui. L'EA travaille sur le cadre temporel H1 et peut ouvrir une position à 10:17, il ne doit pas ouvrir à nouveau avant 11:00, c'est-à-dire sur la barre actuelle.
Compare l'heure d'ouverture de la barre actuelle avec l'heure d'ouverture d'une position. Si iTime < (heure du prix d'ouverture), ne pas ouvrir davantage. Le temps d'ouverture peut être stocké dans une variable globale ou pris dans l'historique.
Est-il possible de commencer le débogage à partir d'une heure spécifique au lieu de 00.00 (autre que l'option de défilement vers). Si quelqu'un le sait, pouvez-vous nous dire comment ?
Est-il possible de trader manuellement en mode débogage, par exemple de fermer manuellement un ordre ouvert par un hibou ?
Bonjour à tous. Je suis en train de réécrire la machine Grail, je n'ai pas de retour en arrière ;-) avec les ordres au marché, il s'ouvre parfaitement, sans erreurs... Mais avec les ordres en attente, j'ai à nouveau des problèmes avec les erreurs 130 et 4107 et le prix désactivé((((.
Je reçois un prix d'ouverture comme ça.
{//--НАЧАЛО ОТЛОЖЕННЫХ ОРДЕРОВ--------------------------------------------------------------------------------------------+//-НАЧАЛО ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПОКУПАК-------------------------------------------------------------------------------------------+int max_bars= iHighest(NULL, // ТЕКУЩИЙ СИМВОЛ
PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРАMODE_HIGH,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ХАЙ
range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ
); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕdouble max_Price=iHigh(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА
max_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
);
if(max_Price-(Ask+2.2*(Ask-Bid)) < 0.0)
{
max_Price = Ask+2.2*(Ask-Bid);
} else
max_Price = max_Price;
//КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ДЛЯ ПОКУПАК//-------------------------------------------------------------------------------------------------+//----ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПРОДАЖ//-------------------------------------------------------------------------------------------------+int min_bars= iLowest(NULL, // ТЕКУЩИЙ СИМВОЛ
PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРАMODE_LOW,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ЛОУ
range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ
); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕdouble min_Price=iLow(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА
min_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
); // --ПОЛУЧИЛ МИНИМАЛЬНУЮ ЦЕНУ ДЛЯ ОТКРЫТИЯ ОТЛОЖКИif(min_Price+(Ask-2.2*(Ask-Bid)) < 0.0)// ПРОВЕРКА ДЛЯ ИЗБЕЖАНИЯ ОШИБКИ 130
{
min_Price = Ask+2.2*(Ask-Bid);
} else
min_Price = min_Price;
//-----ДОБАВЛЕНИЕ ФИЛЬТРА К ОТОЛЖКАМ ЕСЛИ ФИЛЬТР ВКЛЮЧЕНif(use_filter==en_c_filbtpom)
{ //ЕСЛИ ВКЛЮЧЕКНЫ ОТЛОЖКИ С ФИЛЬТРОМdouble filter_buy= Filter_buy*Point; // ПРИСВОЕНИЕ ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ ФИЛЬТР БАЙ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ВХОДНОГО ПАРАМЕТРА И ПЕЕРВОД ЭТОГО ДЕЛА В ПУНКТЫdouble filter_sell= Filter_sell *Point; // ПРИСВОЕНИЕ ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ ФИЛЬТР СЕЛЛ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ВХОДНОГО ПАРАМЕТРА И ПЕЕРВОД ЭТОГО ДЕЛА В ПУНКТЫ
filter_buy= NormalizeDouble(filter_buy,Digits); // НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ФИЛЬТР БАЙ ДЛЯ КОРРЕКТНЫХ РАСЧЁТОВ
filter_sell= NormalizeDouble(filter_sell,Digits); // НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ФИЛЬТР СЕЛЛ ДЛЯ КОРРЕКТНЫХ РАСЧЁТОВ
max_Price= max_Price+filter_buy; //МАКС ПРАЙС ПРИБАВИЛ ЗНАЧЕНИЯ ФИЛЬТРА, ЧТО БЫ ОТЛОЖКА ВСТАЛА ЧУТЬ ВЫШЕ НАЙДЕННОГО ХАЙ
min_Price= min_Price- filter_sell; // ОТ МИН ПРАЙС ОТНИМАЮ ЗНАЧЕНИЕ ФИЛЬТТР СЕЛ, ЧТОБЫ ОТЛОЖКА ВСТАЛА ЧУТЬ НИЖЕ НАЙДЕННОГО МИНИМУМА...
max_Price= NormalizeDouble(max_Price,Digits);
min_Price= NormalizeDouble(min_Price,Digits);
}//--КОНЕЦ ЕСЛИ ОТКРЫВАЕМСЯ С ФИЛЬТРОМ--------------------------------------------------------------------------------------------+//КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ДЛЯ ОТОЛЖЕННЫХ ПРОДАЖ И ПОКУПАК//-------------------------------------------------------------------------------------------------+
J'obtiens un stop loss et un profit comme ceci
//+--- НАЧАЛО РАСЧЁТА STOPLOSS ----------------------------------------------------------------------------+if(tip_sl==en_po_atr) //ЕСЛИ ТИП СТОП ЛОССА СТОИТ ПО АТР ТО ВЫСЧИТЫВАЕМ ЕГО ИЗ АТР
{
sl=NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССАif(sl<stoplevel) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
sl=NormalizeDouble(stoplevel*1.5,Digits); //СТОП ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
}
else// ИНАЧЕ- ТО ЕСТЬ ЕСЛИ СТОП ЛОСС ФИКСИРОВАННЫЙ В ПУНКТАХ
{
sl=NormalizeDouble(razmer_fikc_sl*Point,Digits); // ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ СТОП ЛОССАif(sl<stoplevel) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
sl=NormalizeDouble(stoplevel*1.5,Digits); //СТОП ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
}
//+--- РАСЧЕТ STOPLOSS ЗАВЕРШЕН -------------------------------------------------------------------+//+--НАЧАЛО РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+if(sl > 0)
//{// НАЧАЛО ПРОВЕРКИ НА НОЛЬ
tp=sl*tp_v_R; // ВЫЧИСЛЯЕМ ПРОФИТ УМНОЖАЯ СТОП ЛОС НА КОЛИЧЕСТВО РИСКА
tp= NormalizeDouble(tp, Digits());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ// ПРОВЕРКА ТЕЙК ПРОФИТА НА СТОП ЛЕВЕЛ ОТ МАКАРА--if(tp<stoplevel) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
tp=NormalizeDouble(stoplevel*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
//} // КОНЕЦ ПРОВЕРКИ НА НОЛЬ //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+
Lorsque j'obtiens cette information, je vérifie le niveau de l'arrêt et je vérifie si le prix d'ouverture calculé est supérieur à l'ascendant.
J'ouvre l'arrêt d'achat tout seul comme ceci
/*УСЛОВИЕ 1*///-------------------------------------------------------------------------------------------------+if(f_condition1())
{ // НАЧАЛО УСЛОВИЕ 1//-------------------------------------------------------------------------------------------------+if(ao_buy!=EMPTY_VALUE && count_orders_stop_buy ==0 && count_orders_market_buy ==0&& max_Price>Ask)
{ //НАЧАЛО ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕPrint("БАЙ СТОП ДИВЕРГЕНЦИЯ AO УСЛОВИЕ 1");
if( OrderSend(Symbol(),OP_BUYSTOP,lot,max_Price,slippages,max_Price-sl,max_Price+tp , Coment,Magik_number,TimeCurrent()+order_life_time))Print("OPEN BUY STOP DIVERGENCE AO "); // ОТКРЫВАЕМ ОТЛОЖЕННЫЙ БАЙ ОРДЕРif (GetLastError()==141){Alert(GetLastError()); ExpertRemove();}// ПРОВЕРКА ОТ ДОЛБАНИЯ СЕРВЕРА И БАНА СЧЁТА
} //КОНЕЦ ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
} //--- КОНЕЦ УСЛОВИЕ1//-------------------------------------------------------------------------------------------------+
Ma question est la suivante : que dois-je faire pour éviter ces erreurs ?
Bonjour à tous. Je suis en train de réécrire la machine Grail - je n'ai pas de retour en arrière ;-) avec les ordres au marché tout s'ouvre bien - pas d'erreurs... Mais avec les ordres en attente encore des problèmes sous forme d'erreurs 130 et 4107 et prix désactivé((((.
Je ne comprends pas où tu veux mettre le code que tu m'as envoyé. Pouvez-vous mettre en évidence ce qui se trouve dans ma pièce et où insérer l'exception d'erreur ?
DanilaMactep: Je ne comprends pas où vous voulez ajouter le code que vous avez téléchargé. Pouvez-vous mettre en évidence à partir de ma pièce ce qui est et où insérer l'exception d'erreur ?
DanilaMactep: Je ne sais pas quoi changer en quoi. Puis-je coder en couleur ce qui est vert, et en rouge ce en quoi changer le vert ?
{//--НАЧАЛО ОТЛОЖЕННЫХ ОРДЕРОВ--------------------------------------------------------------------------------------------+//-НАЧАЛО ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПОКУПАК-------------------------------------------------------------------------------------------+int max_bars= iHighest(NULL, // ТЕКУЩИЙ СИМВОЛ
PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРАMODE_HIGH,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ХАЙ
range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ
); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕdouble max_Price=iHigh(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА
max_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
);
if(max_Price-(Ask+2.2*(Ask-Bid)) < 0.0)
{
max_Price = Ask+2.2*(Ask-Bid);
} else
max_Price = max_Price;//КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ДЛЯ ПОКУПАК//-------------------------------------------------------------------------------------------------+//----ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПРОДАЖ//-------------------------------------------------------------------------------------------------+int min_bars= iLowest(NULL, // ТЕКУЩИЙ СИМВОЛ
PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРАMODE_LOW,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ЛОУ
range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ
); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕdouble min_Price=iLow(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА
min_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
); // --ПОЛУЧИЛ МИНИМАЛЬНУЮ ЦЕНУ ДЛЯ ОТКРЫТИЯ ОТЛОЖКИif(min_Price+(Ask-2.2*(Ask-Bid)) < 0.0)// ПРОВЕРКА ДЛЯ ИЗБЕЖАНИЯ ОШИБКИ 130
{
min_Price = Ask+2.2*(Ask-Bid);
} else
min_Price = min_Price;//-----ДОБАВЛЕНИЕ ФИЛЬТРА К ОТОЛЖКАМ ЕСЛИ ФИЛЬТР ВКЛЮЧЕНif(use_filter==en_c_filbtpom)
{ //ЕСЛИ ВКЛЮЧЕКНЫ ОТЛОЖКИ С ФИЛЬТРОМdouble filter_buy= Filter_buy*Point; // ПРИСВОЕНИЕ ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ ФИЛЬТР БАЙ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ВХОДНОГО ПАРАМЕТРА И ПЕЕРВОД ЭТОГО ДЕЛА В ПУНКТЫdouble filter_sell= Filter_sell *Point; // ПРИСВОЕНИЕ ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ ФИЛЬТР СЕЛЛ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ВХОДНОГО ПАРАМЕТРА И ПЕЕРВОД ЭТОГО ДЕЛА В ПУНКТЫ
filter_buy= NormalizeDouble(filter_buy,Digits); // НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ФИЛЬТР БАЙ ДЛЯ КОРРЕКТНЫХ РАСЧЁТОВ
filter_sell= NormalizeDouble(filter_sell,Digits); // НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ФИЛЬТР СЕЛЛ ДЛЯ КОРРЕКТНЫХ РАСЧЁТОВ
max_Price= max_Price+filter_buy; //МАКС ПРАЙС ПРИБАВИЛ ЗНАЧЕНИЯ ФИЛЬТРА, ЧТО БЫ ОТЛОЖКА ВСТАЛА ЧУТЬ ВЫШЕ НАЙДЕННОГО ХАЙ
min_Price= min_Price- filter_sell; // ОТ МИН ПРАЙС ОТНИМАЮ ЗНАЧЕНИЕ ФИЛЬТТР СЕЛ, ЧТОБЫ ОТЛОЖКА ВСТАЛА ЧУТЬ НИЖЕ НАЙДЕННОГО МИНИМУМА...
max_Price= NormalizeDouble(max_Price,Digits);
min_Price= NormalizeDouble(min_Price,Digits);
}//--КОНЕЦ ЕСЛИ ОТКРЫВАЕМСЯ С ФИЛЬТРОМ--------------------------------------------------------------------------------------------+
Oui. L'EA travaille sur le cadre temporel H1 et peut ouvrir une position à 10:17, il ne doit pas ouvrir à nouveau avant 11:00, c'est-à-dire sur la barre actuelle.
Est-il possible de commencer le débogage à partir d'une heure spécifique au lieu de 00.00 (autre que l'option de défilement vers). Si quelqu'un le sait, pouvez-vous nous dire comment ?
Est-il possible de trader manuellement en mode débogage, par exemple de fermer manuellement un ordre ouvert par un hibou ?
Bonjour à tous. Je suis en train de réécrire la machine Grail, je n'ai pas de retour en arrière ;-) avec les ordres au marché, il s'ouvre parfaitement, sans erreurs... Mais avec les ordres en attente, j'ai à nouveau des problèmes avec les erreurs 130 et 4107 et le prix désactivé((((.
Je reçois un prix d'ouverture comme ça.
{//--НАЧАЛО ОТЛОЖЕННЫХ ОРДЕРОВ--------------------------------------------------------------------------------------------+ //-НАЧАЛО ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПОКУПАК-------------------------------------------------------------------------------------------+ int max_bars= iHighest(NULL, // ТЕКУЩИЙ СИМВОЛ PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРА MODE_HIGH,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ХАЙ range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ ); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ double max_Price=iHigh(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-) PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА max_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;) ); if(max_Price-(Ask+2.2*(Ask-Bid)) < 0.0) { max_Price = Ask+2.2*(Ask-Bid); } else max_Price = max_Price; //КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ДЛЯ ПОКУПАК//-------------------------------------------------------------------------------------------------+ //----ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПРОДАЖ//-------------------------------------------------------------------------------------------------+ int min_bars= iLowest(NULL, // ТЕКУЩИЙ СИМВОЛ PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРА MODE_LOW,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ЛОУ range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ ); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ double min_Price=iLow(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-) PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА min_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;) ); // --ПОЛУЧИЛ МИНИМАЛЬНУЮ ЦЕНУ ДЛЯ ОТКРЫТИЯ ОТЛОЖКИ if(min_Price+(Ask-2.2*(Ask-Bid)) < 0.0)// ПРОВЕРКА ДЛЯ ИЗБЕЖАНИЯ ОШИБКИ 130 { min_Price = Ask+2.2*(Ask-Bid); } else min_Price = min_Price; //-----ДОБАВЛЕНИЕ ФИЛЬТРА К ОТОЛЖКАМ ЕСЛИ ФИЛЬТР ВКЛЮЧЕН if(use_filter==en_c_filbtpom) { //ЕСЛИ ВКЛЮЧЕКНЫ ОТЛОЖКИ С ФИЛЬТРОМ double filter_buy= Filter_buy*Point; // ПРИСВОЕНИЕ ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ ФИЛЬТР БАЙ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ВХОДНОГО ПАРАМЕТРА И ПЕЕРВОД ЭТОГО ДЕЛА В ПУНКТЫ double filter_sell= Filter_sell *Point; // ПРИСВОЕНИЕ ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ ФИЛЬТР СЕЛЛ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ВХОДНОГО ПАРАМЕТРА И ПЕЕРВОД ЭТОГО ДЕЛА В ПУНКТЫ filter_buy= NormalizeDouble(filter_buy,Digits); // НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ФИЛЬТР БАЙ ДЛЯ КОРРЕКТНЫХ РАСЧЁТОВ filter_sell= NormalizeDouble(filter_sell,Digits); // НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ФИЛЬТР СЕЛЛ ДЛЯ КОРРЕКТНЫХ РАСЧЁТОВ max_Price= max_Price+filter_buy; //МАКС ПРАЙС ПРИБАВИЛ ЗНАЧЕНИЯ ФИЛЬТРА, ЧТО БЫ ОТЛОЖКА ВСТАЛА ЧУТЬ ВЫШЕ НАЙДЕННОГО ХАЙ min_Price= min_Price- filter_sell; // ОТ МИН ПРАЙС ОТНИМАЮ ЗНАЧЕНИЕ ФИЛЬТТР СЕЛ, ЧТОБЫ ОТЛОЖКА ВСТАЛА ЧУТЬ НИЖЕ НАЙДЕННОГО МИНИМУМА... max_Price= NormalizeDouble(max_Price,Digits); min_Price= NormalizeDouble(min_Price,Digits); }//--КОНЕЦ ЕСЛИ ОТКРЫВАЕМСЯ С ФИЛЬТРОМ--------------------------------------------------------------------------------------------+ //КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ДЛЯ ОТОЛЖЕННЫХ ПРОДАЖ И ПОКУПАК//-------------------------------------------------------------------------------------------------+J'obtiens un stop loss et un profit comme ceci
Lorsque j'obtiens cette information, je vérifie le niveau de l'arrêt et je vérifie si le prix d'ouverture calculé est supérieur à l'ascendant.
J'ouvre l'arrêt d'achat tout seul comme ceci
Ma question est la suivante : que dois-je faire pour éviter ces erreurs ?
Bonjour à tous. Je suis en train de réécrire la machine Grail - je n'ai pas de retour en arrière ;-) avec les ordres au marché tout s'ouvre bien - pas d'erreurs... Mais avec les ordres en attente encore des problèmes sous forme d'erreurs 130 et 4107 et prix désactivé((((.
exclure 4107
Exclure 4107
Je ne comprends pas où vous voulez ajouter le code que vous avez téléchargé. Pouvez-vous mettre en évidence à partir de ma pièce ce qui est et où insérer l'exception d'erreur ?
ne pas y ajouter, mais la changer
ne pas y ajouter, mais la changer
Je ne sais pas quoi changer en quoi. Puis-je coder en couleur ce qui est vert, et en rouge ce en quoi changer le vert ?
{//--НАЧАЛО ОТЛОЖЕННЫХ ОРДЕРОВ--------------------------------------------------------------------------------------------+ //-НАЧАЛО ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПОКУПАК-------------------------------------------------------------------------------------------+ int max_bars= iHighest(NULL, // ТЕКУЩИЙ СИМВОЛ PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРА MODE_HIGH,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ХАЙ range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ ); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ double max_Price=iHigh(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-) PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА max_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;) ); if(max_Price-(Ask+2.2*(Ask-Bid)) < 0.0) { max_Price = Ask+2.2*(Ask-Bid); } else max_Price = max_Price; //КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ДЛЯ ПОКУПАК//-------------------------------------------------------------------------------------------------+ //----ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПРОДАЖ//-------------------------------------------------------------------------------------------------+ int min_bars= iLowest(NULL, // ТЕКУЩИЙ СИМВОЛ PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРА MODE_LOW,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ЛОУ range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ ); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ double min_Price=iLow(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-) PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА min_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;) ); // --ПОЛУЧИЛ МИНИМАЛЬНУЮ ЦЕНУ ДЛЯ ОТКРЫТИЯ ОТЛОЖКИ if(min_Price+(Ask-2.2*(Ask-Bid)) < 0.0)// ПРОВЕРКА ДЛЯ ИЗБЕЖАНИЯ ОШИБКИ 130 { min_Price = Ask+2.2*(Ask-Bid); } else min_Price = min_Price; //-----ДОБАВЛЕНИЕ ФИЛЬТРА К ОТОЛЖКАМ ЕСЛИ ФИЛЬТР ВКЛЮЧЕН if(use_filter==en_c_filbtpom) { //ЕСЛИ ВКЛЮЧЕКНЫ ОТЛОЖКИ С ФИЛЬТРОМ double filter_buy= Filter_buy*Point; // ПРИСВОЕНИЕ ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ ФИЛЬТР БАЙ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ВХОДНОГО ПАРАМЕТРА И ПЕЕРВОД ЭТОГО ДЕЛА В ПУНКТЫ double filter_sell= Filter_sell *Point; // ПРИСВОЕНИЕ ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ ФИЛЬТР СЕЛЛ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ВХОДНОГО ПАРАМЕТРА И ПЕЕРВОД ЭТОГО ДЕЛА В ПУНКТЫ filter_buy= NormalizeDouble(filter_buy,Digits); // НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ФИЛЬТР БАЙ ДЛЯ КОРРЕКТНЫХ РАСЧЁТОВ filter_sell= NormalizeDouble(filter_sell,Digits); // НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ФИЛЬТР СЕЛЛ ДЛЯ КОРРЕКТНЫХ РАСЧЁТОВ max_Price= max_Price+filter_buy; //МАКС ПРАЙС ПРИБАВИЛ ЗНАЧЕНИЯ ФИЛЬТРА, ЧТО БЫ ОТЛОЖКА ВСТАЛА ЧУТЬ ВЫШЕ НАЙДЕННОГО ХАЙ min_Price= min_Price- filter_sell; // ОТ МИН ПРАЙС ОТНИМАЮ ЗНАЧЕНИЕ ФИЛЬТТР СЕЛ, ЧТОБЫ ОТЛОЖКА ВСТАЛА ЧУТЬ НИЖЕ НАЙДЕННОГО МИНИМУМА... max_Price= NormalizeDouble(max_Price,Digits); min_Price= NormalizeDouble(min_Price,Digits); }//--КОНЕЦ ЕСЛИ ОТКРЫВАЕМСЯ С ФИЛЬТРОМ--------------------------------------------------------------------------------------------+Est-il possible d'obtenir les données de prix en barre et de volume en ticks d'autres instruments dans le testeur MT4 ?
Essayez-le.