Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 220

 
danya-asg:

Понял свою ошибку, но не понял как решить. Задача нормально запускается каждую секунду, но у меня не правильно считается время с начала текущей свечи.

функция Seconds() -выдаёт секунды по данным последнего известного тика, а мне надо как-то посчитать реальное количество секунд с момента открытия минутной свечи на момент вызова функции, даже если последние пару секунд тиков вообще не было.

 TimeSeconds (TimeLocal())  или (TimeLocal() - Time[0]) -  тоже не подойдёт, т.к. локальное время компа может отличаться на несколько секунд от сервера. Как решить задачу?


У вас OnTimer() запускается каждую секунду,

void OnTimer()
{
OnTick(); //-- старт каждую секунду
}
 
Alekseu Fedotov:


У вас OnTimer() запускается каждую секунду,


Запускаться то он запускается, только мне для правильной работы программы нужно чтобы он ещё каждую секунду показывал время сервера,  а тут уже зависит от того пришел очередной тик или нет. Если не пришел, то ontimer запустился, но время всё равно показал отстающее, вот в чём проблема.
 

Пока единственное что придумал, но как-то криво:

int sek
void OnTick()
{
if(Seconds() > sek)
sek = Seconds ();
Clicker (); //-- старт каждый тик
}
void OnTimer()
{
sek = TimeSeconds(TimeLocal());
Clicker (); //-- старт каждую секунду
}

И то для этого пришлось на компе поставить синхронизацию времени раз в 10 минут.

 
danya-asg:

Пока единственное что придумал, но как-то криво:

И то для этого пришлось на компе поставить синхронизацию времени раз в 10 минут.


Нужно делать миллисекундный таймер 100-200 мс, и полностью в нём работать.
Секунды - слишком долго, и проскакивают часто.

EventSetMillisecondTimer(200);
GetTickCount();
 

подскажите пожалуйста что начать читать что бы въехать в суть? совершенно не понятно что надо делать в начале, в середине, в конце, что вобще надо вписывать. задача состоит что бы по индюку сделать сову, и стоп перетаскивать за 2 свечи после входа, если сделка идет против текущей тенденции , то закрывать сделку и открывать на ревер переворачивая стоп так же. что не одно норм видео не могу найти, да и вобще понятия не имею как константу 20 и 80 сделать точкой входа и выхода. ну и так же добавить функции закрытия сделок в пятницу и открытие в понедельник, что бы устранить гепы. вот почему это дело настолько сложное? казалось бы надо просто указать 4 параметра + дни добавить.я уже 2 года на фондовом рынке и могу сказать что только скорее всего такая тс не будет сливать

Файлы:
f9h46khtl1.png  29 kb
 
novikov433:

подскажите пожалуйста что начать читать что бы въехать в суть? совершенно не понятно что надо делать в начале, в середине, в конце, что вобще надо вписывать. задача состоит что бы по индюку сделать сову, и стоп перетаскивать за 2 свечи после входа, если сделка идет против текущей тенденции , то закрывать сделку и открывать на ревер переворачивая стоп так же. что не одно норм видео не могу найти, да и вобще понятия не имею как константу 20 и 80 сделать точкой входа и выхода. ну и так же добавить функции закрытия сделок в пятницу и открытие в понедельник, что бы устранить гепы. вот почему это дело настолько сложное? казалось бы надо просто указать 4 параметра + дни добавить.я уже 2 года на фондовом рынке и могу сказать что только скорее всего такая тс не будет сливать

Прости меня, пьяного идиота... Но скажу тебе так: Если ты уверен, что "такая тс не будет сливать" что мешает заработать в ручную 20$ и заказать этот советник во фрилансе? Уверяю тебя, там большинство добропорядочных людей и не станут распространять эту ТС и тем более советник где попало...
 
Alexey Viktorov:
Прости меня, пьяного идиота... Но скажу тебе так: Если ты уверен, что "такая тс не будет сливать" что мешает заработать в ручную 20$ и заказать этот советник во фрилансе? Уверяю тебя, там большинство добропорядочных людей и не станут распространять эту ТС и тем более советник где попало...

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

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

что то вобще мозг не варит что даже в конструкторе надо сделать 1,2,3 и т.д и почему самое главное именно в таком порядке нужно всё соединить стрелочками, кто вобще проводит обучение mql 4 от и до, а не как интернет бойцы создают курсы в которых вобще нечего не объясняют почему именно так происходит , то есть в  словах, сам потом нечего нового не сделаешь, а будешь вынужден просто копировать их код .... они же ведь знают за какой порядок что отвечает и не тыкали наугад....ну пусть профи делают пирамидинг, динамический лот, стоп грамотный; моя задача кроется в другом - скачать нужные фильтры и понять суть образования тренда. Спасибо за помощь!

 
novikov433:

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

реально ли вобще сделать тс в каких нибудь конструкторах сов? вобще хотя бы самое основное понимать как делать самому, а уже какие то дополнит функции вроде стопа в указанном месте, или торговлю по определенным дням заказывать, что бы дописали

 

Реально написать ТЗ на АТС , и в ТЗ указать, что б были откомментированы все строки - заплатите чуть больше, зато увидите, как и что работает, а уже потом, постепенно будите вносить изменения в рабочий код и смотреть изменения - так и начнется самообучения.
 
novikov433: ... хочу ... понимать как делать советник ... ну а тс на самом деле будет не сливающая, по той причине что убыточные ордера переводятся в безубыток и просто нужно дождаться тренда
Уважаемый novikov433 !!! Научу Вас программированию, или напишу Вам бесплатно советник или и то и другое!!!  В замен научите, как убыточные ордера переводятся в безубыток. Можно на простом примере. Даю жене приказ (ордер): рано утром на базаре купить ведро картошки, а к 10 часам (фундаментальный анализ) цена возрастает - продать. Но иногда к пол-десятому (новости) привозят машину картошки. И цена (на новостях) сразу вниз, и уже до конца дня, а то и на всю неделю. Ставлю СтопЛосс - если цена убавится на 10 руб, сразу продавай, как сможешь (по рыночной цене). Как изменить приказ, чтоб исключить убыток. Если интересен такой вариант - напишите в личку свое мыло.
 
Здравствуете. Помогите пожалуйста разобраться с одной ошибкой при тесте на тестере. Во время тестирования на всех тиках советник 1ую сделку buystop открывает, условие не прошло и он его удаляет. 2ую sellstop открывает переводит в рыночный, закрывает хотя условие не сработало. Далее в журнале появляется запись попытка закрыть buy2, unknown ticket for orderclose function. Код прикладываю по памяти поскольку на работе, возможны неточности. Блок переборов ордеров обычный 
Symb=Symbol();                               
   Total=0;                                     
   for(int i=1; i<=OrdersTotal(); i++)          
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if (OrderSymbol()!=Symb)continue;      
         if (OrderType()>1) continue;
         if (OrderType<=1)                     
            {
             Total++;                               
             if (Total>1)                           
               {
                Alert("Несколько рыночных ордеров. Эксперт не работает.");
                return;                             
               }
             Ticket=OrderTicket();                  
             Tip   =OrderType();                    
             Price =OrderOpenPrice();               
             SL    =OrderStopLoss();                
             TP    =OrderTakeProfit();              
             Lot   =OrderLots();                    
            }
        }

блок закрытие вроде тоже вопросов особо не вызывает, условия показал упрощённое:

while(true)                                  
     {
      if (Tip==0 && Cls_B==true)                
        {                                       
         Alert("Попытка закрыть Buy ",Ticket);
         RefreshRates();                        
         Ans=OrderClose(Ticket,Lot,Bid,2);      
         if (Ans==true)                         
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              
           }
         return;                                
        }
 
      if (Tip==1 && Cls_S==true)                
        {                                       
         Alert("Попытка закрыть Sell ",Ticket);
         RefreshRates();                        
         Ans=OrderClose(Ticket,Lot,Ask,2);      
         if (Ans==true)                         
           {
            Alert ("Закрыт ордер Sell ",Ticket);
            break;                              // Выход из цикла закр
           }
         return;                                // Выход из start()
        }
      break;                                    // Выход из while
     }

буду очень признателен.

Причина обращения: