Ваши вопросы по языку MQL4

Дмитрий007

Гуру форума
Я бот пытался прогнать на котирах 99.9, сделки не открывает. У меня история за любой год, любой ТФ. Значит условие входа нет, если вообще правильно описано в алгоритме. Я бегло посмотрел. Да чума, лучше заново идею в новом боте реализовать. :embrace:

99% там не надо) он по ценам открытия открывает. Попробуйте) А что так, код кривой слишком?
 

iii237

Активный участник
народ, а по какой причине сов может не видеть истории при тестировании? Вот загрузил котировки до 2012 года, а сов берет для теста только от 2014 максимум. Все ограничения сняты. Котировки удалял, перегружал заново. Вот такие пироги. В чем проблема?

Советник пишет в журнале, что нет котировок. Хотя они есть.

Сов тут ни при чем, это работа тестера. Бывает у них такое, не знаю от чего, но маешься-маешься - поубивал бы всех - а причины так и не добиваешься.
Иногда помогает переустановка терминала. Иногда - простое переписывание терминала. Это когда всю папку с терминалом копируешь в другое место, терминал удаляешь через панель управления по всем правилам, а потом терминал переписываешь обратно.
 

iii237

Активный участник
И еще в настройках цифры выставить по максимуму перед тем, как котировки качать:
ha-i2FSwjqHEL


Чо-то не могу картинку вставить. Вот ссылочка на нее:

Картинка _https://yadi.sk/d/ha-i2FSwjqHEL
 
Последнее редактирование модератором:

Дмитрий007

Гуру форума
Сов тут ни при чем, это работа тестера. Бывает у них такое, не знаю от чего, но маешься-маешься - поубивал бы всех - а причины так и не добиваешься.
Иногда помогает переустановка терминала. Иногда - простое переписывание терминала. Это когда всю папку с терминалом копируешь в другое место, терминал удаляешь через панель управления по всем правилам, а потом терминал переписываешь обратно.

да уж, достали они со своими билдами. Раньше все как часы работало, хоть за 10 лет тесть. Поставил оригинальный терминал, без брокерских понтов, так он терь историю не грузит, щас буду в ручную устанавливать))


впихнул от 2004 года котировки, нифига не видит:facepalm:
 

Вложения

  • 111.png
    111.png
    87 КБ · Просмотры: 22
Последнее редактирование:

iii237

Активный участник
Молчат все как партизаны.);) Допёр же, ну крут же, жалко не Скрудж.)))):D

if (AccountEquity()>=AccountBalance()+AccountCredit()+OrderSwap()+AccountBalance()/100*PercentProfit)
{Close_all();
}

Во как надо. Чёртов грёбанный кредит.:embrace: Так же и посидеть можно.))))
Так что други, на будущие не забываем вписывать в логику срабатывания всё что присутствует в цифрах.) *hi*

За кредит спасибо, первый раз узнал, что такое есть.
А просто взять в расчет сумму по всем живым ордерам OrderProfit()+OrderSwap()+OrderComission() не пробовал?
 

kalasch

Новичок форума
всем привет!кто сможет написать индикатор по этому коду в мт4
INPUTS: STRENGTH(1);


VALUE1=SWINGHIGH(1,H,STRENGTH,80);

VALUE2=SWINGLOW(1,L,STRENGTH,80);



IF VALUE1>-1 THEN PLOT1(VALUE1,"BUYFRACTAL");

IF VALUE2>-1 THEN PLOT2(VALUE2,"SELLFRACTAL");
 

Fractlr

Новичок форума
Hola, soy novato en esto de la programación, alguien podria explicarme como se puede programar la entrada o salida de una posicion por el punto mas alto o mas bajo del RSI?
Gracias.
 

Слава Кучер

Ушел в подполье
Всем Привет!
Подскажите знающие, как сделать информационную панель советника, чтобы фон панели (черный например), был поверх всех обьектов на графике? А то получается в одном терминале панель поверх, в другом на панель лезут бары, символ валюты. Тоже самое и если на одном компе норм, то на другом снова таки на панель лезут бары.
Нужно примерно, чтобы было так, как на скрине ниже, независимо от терминалов, и компов.
 

Вложения

  • Toolwiz201510-20-15-58-57.png
    Toolwiz201510-20-15-58-57.png
    49 КБ · Просмотры: 36

RoboMaks

Элитный участник
Всем Привет!
Подскажите знающие, как сделать информационную панель советника, чтобы фон панели (черный например), был поверх всех обьектов на графике? А то получается в одном терминале панель поверх, в другом на панель лезут бары, символ валюты. Тоже самое и если на одном компе норм, то на другом снова таки на панель лезут бары.
Нужно примерно, чтобы было так, как на скрине ниже, независимо от терминалов, и компов.

Символ валюты, сетку, линию цены и объекты, созданные до прикрепления панели на график перекрыть несложно - достаточно указать при создании окна панели параметр OBJPROP_BACK = 0, но это не перекроет ценовой график, если в "свойствах" поставлена галочка "график сверху". Для этого необходимо принудительно сбросить свойство "график сверху" строкой ChartSetInteger(0,CHART_FOREGROUND,0);.
То же самое надо будет предусмотреть и с другими объектами, созданными после прикрепления этой панели на график - искать эти объекты и задавать значение объектов OBJPROP_BACK = 1 или задавать в свойствах при создании линий в терминале "рисовать объект как фон" ( на выбор - что легче :) )
 

Вложения

  • ФОН.mq4
    1,4 КБ · Просмотры: 30
  • USDJPYM1.png
    USDJPYM1.png
    42,2 КБ · Просмотры: 36

Paragon

Местный знаток
Привет!
Вот никогда не задумывался над вопросом:
рыночные ордера на бай и селл цена открывает по Аск(бай) и Бид(селл),тут не поспоришь и все,баста!
Закрывает по профиту на бай (Бид) и селл (Аск),по Стоплосс на бай (Аск) и селл (Бид).
Пожалуйста ответьте,возможно в боте изменить закрытие по Стоплоссу на бай (Бид) и селл (Аск) , а также закрытие тралом?
То есть ,по закрытию убытка или профитом, присутствуют ограничения менять местами Аск и Бид?
 

Ugar

Гуру форума
Привет!
Вот никогда не задумывался над вопросом:
рыночные ордера на бай и селл цена открывает по Аск(бай) и Бид(селл),тут не поспоришь и все,баста!
Закрывает по профиту на бай (Бид) и селл (Аск),по Стоплосс на бай (Аск) и селл (Бид).
Пожалуйста ответьте,возможно в боте изменить закрытие по Стоплоссу на бай (Бид) и селл (Аск) , а также закрытие тралом?
То есть ,по закрытию убытка или профитом, присутствуют ограничения менять местами Аск и Бид?
Да, Buy открывается по Ask. Даже если он отложенный BuyStop, BuyLimit, он открывается когда именно Ask зацепит цену открытия отложенного ордера. Для Sell по Bid.
А закрытие Buy всегда по Bid. Не зависимо от того в прибыли или в убытке. Закрытие Sell всегда по Ask, так же независимо от прибыли или убытка.
Приказы тейк профит, стоп лосс, стоп трейд находятся на сервере ДЦ.
Позиция Buy закрывается когда Bid зацепит любой из приказов закрытия. Sell закроется когда Ask зацепит любой из приказов закрытия. Советник эти приказы может ставить или передвигать, до их сработки. А вот само закрытие происходит без участия советника.
Исключением могут быть виртуальные стопы и тейки. Но это по сути это закрытие ордеров советником по текущей цене, Buy по Bid, Sell по Ask.
 

Paragon

Местный знаток
Да, Buy открывается по Ask. Даже если он отложенный BuyStop, BuyLimit, он открывается когда именно Ask зацепит цену открытия отложенного ордера. Для Sell по Bid.
А закрытие Buy всегда по Bid. Не зависимо от того в прибыли или в убытке. Закрытие Sell всегда по Ask, так же независимо от прибыли или убытка.
Приказы тейк профит, стоп лосс, стоп трейд находятся на сервере ДЦ.
Позиция Buy закрывается когда Bid зацепит любой из приказов закрытия. Sell закроется когда Ask зацепит любой из приказов закрытия. Советник эти приказы может ставить или передвигать, до их сработки. А вот само закрытие происходит без участия советника.
Исключением могут быть виртуальные стопы и тейки. Но это по сути это закрытие ордеров советником по текущей цене, Buy по Bid, Sell по Ask.
И еще момент,коль так не оптимистично,закрытие по эквити сможет перехитрить, то есть профиты считает от эквити запомненного на старте серии ?
 
Последнее редактирование:
  • Like
Реакции: Ugar

Viko2000

Почетный гражданин
И еще момент,коль так не оптимистично,закрытие по эквити сможет перехитрить, то есть профиты считает от эквити запомненного на старте серии ?
К дополнению к Ugar...Как не меняй, на сервере ДЦ свои законы. Лучше не парься. Логичнее было бы приспособиться.)));)
 
  • Like
Реакции: Ugar

Ugar

Гуру форума
И еще момент,коль так не оптимистично,закрытие по эквити сможет перехитрить, то есть профиты считает от эквити запомненного на старте серии ?
Можно считать что угодно и закрывать приказом. Можно тейк ставить дальше на спред.
При закрытии по тейку или стопу погрешность результата будет только проскальзывание и гэпы. При закрытии приказом на погрешность результата может оказать влияние, кроме проскальзывания и гэпов, ещё и реквоты.
А при закрытии серии ордеров, ещё и время закрытия всех предыдущих может влиять ещё больше на результат.
 

_SERG_

Активный участник
да, все на максимум, история загружена, а толку нет(

_SERG_, Вам бы стихи писать :D А сов недооценили, все гениальное - просто ;)
Ну-ну, у меня таких гениальных вещей, вагон и маленькая тележка. Сам писал. :D
А потом, проверял, где лохонулся.:D
Так, что поэт из меня, мягко говоря - никакой!:D
Но в отличие от немого, пробухтеть смогу.:D
 
Последнее редактирование:

_SERG_

Активный участник
Hola, soy novato en esto de la programación, alguien podria explicarme como se puede programar la entrada o salida de una posicion por el punto mas alto o mas bajo del RSI?
Gracias.
Existe una técnica , pero está ligada a la struktkre onda, no indicadores.
Indicadores para determinar la tarde, y es necesario determinar de antemano
la entrada. No es una cuestión de mensajes de chat . Es un largo tiempo
trabajando en ti mismo .
 
Последнее редактирование:

paylesss

Интересующийся
Вопрос от новичка

Здравствуйте ув. форумчане. Помогите разобраться.

PHP:
void OnTick()
  {
//---
   
   double Pr=Bid; 
   if (OrdersTotal()<1)
   {    
     double TP=Bid-TPr*Point;
     double SL=Bid+SLr*Point;
     int ticc=OrderSend(Symbol(),OP_SELL,0.01,Pr,3,SL,TP,"",0,0,CLR_NONE);
     if(ticc<0) Print("Ошибка открытия ордера: ",GetLastError());  
        
     
   }  
   bool o=OrderSelect(ticc,SELECT_BY_TICKET);
   
   if ((OrderStopLoss()-Bid)>120*Point && OrdersTotal() )
     {
     double TP1=Bid-TPr*Point;
     double SL1=Bid+100*Point;
     bool res=OrderModify(OrderTicket(),OrderOpenPrice(),SL1,TP1,0,Blue);
               if(!res)
               Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
               else
               Print("Цена Stop Loss ордера успешно модифицирована.");        
     }
     
  }

вот простой код для открытия ордера и его модифицирования в последущем. т.е как только цена уходит от стоплосса более чем на 120 пунктов , стоп перемещается на 100 пунктов вниз.
все это только начал писать, да по сути..почти с каждым тиком будет перемещать стоп, да и вообще это так..только начало...но это все потом доделаю. сейчас вопрос вот в чем...
выдает ошибку 'ticc' - undeclared identifier;
Но ведь она объявлена!!
Пробовал объявить переменную ticc в самом начале void OnTick(). ошибка исчезает.НО. программа срабатывает один раз! выставляет ордер , тут же его меняет и все...при следующем тике ticc уже равна 0 и бполее ордер не модифицируется. Почему так? Почему ticc превращается в 0!?
 

hoz

Активный участник
Тут конечно риторика, но сов размером 5 кило, нормально работать никогда не будет.

Полностью согласен. В 5 кило не возможно вместить адекватный алгоритм с проверкой всех сопутствующих условий и заданием соответствующих задач.
Проверно на собственной шкуре..:nda:
 

hoz

Активный участник
да, все на максимум, история загружена, а толку нет(

_SERG_, Вам бы стихи писать :D А сов недооценили, все гениальное - просто ;)

Как вариант, бот подстроен под историю. И там задан период примерный, которые нужно захватить. А другое не цепляет.
Если нет исходника не проверить никак. А если исходник есть, то проверка проста и логична.
Вбейте зависимые параметры идату текущую в сову. И по ходу будет в процессе тестирования все данные выводить в журнал или лог сова.
 
Верх