Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 843

 
tim2019:
Quindi non pensi che sia troppo? Forse gli sviluppatori dovrebbero guardare altre risorse freelance per capire come dovrebbe essere un'interfaccia user friendly. Non sono nemmeno riuscito a trovare subito il pulsante Iscriviti. Nel complesso, è terribile.

No, non lo so.

Ti sei registrato qui solo ieri. Cosa avete da vendere? Quali conoscenze hai per eseguire ordini da freelance a un livello decente? Non al livello di "ogni come, solo per sbattersi", ma a un livello che corrisponde a quello di un eccellente, facciamo i bravi, sviluppatore?

O dovresti sbrigarti prima di cambiare idea?

 
Artyom Trishkin:

No, non lo so.

Ti sei registrato qui solo ieri. Cosa avete da vendere? Che cosa avete delle conoscenze per eseguire gli ordini nel servizio freelance a un livello decente? Non al livello di "ogni come, solo per sbattersi", ma a un livello alla pari con un eccellente, diciamo buono, sviluppatore?

O vuoi sbrigarti prima di cambiare idea?

Dopo tutto, ci sono alcuni standard per l'interfaccia. Se ci fosse un errore, dovremmo almeno informare l'utente su quale tipo di errore, piuttosto che costringerlo a pestarci sopra diverse volte con la testardaggine di un picchio e scaricare/riempire di nuovo.

Cosa ha a che fare questo con la conoscenza o con ciò che è in vendita? Non sono ancora arrivato a quella fase. Piuttosto, sfortunatamente, questo è ciò che è il mondo moderno. Non mi è piaciuto, l'ho chiuso e sono passato oltre. Noi non siamo così. E tutto sommato, una conversazione vuota. Parlo a sproposito e mi stanno convincendo che è così che deve essere. Ok.

 
tim2019:

Ci sono, dopo tutto, alcuni standard di interfaccia. Se c'è un errore, si usa almeno dire all'utente che tipo di errore c'è, piuttosto che costringerlo a beccare ripetutamente con la tenacia di un picchio e scaricare/compilare di nuovo.

Cosa ha a che fare questo con la conoscenza o con ciò che è in vendita? Non sono ancora arrivato a quella fase. Piuttosto, sfortunatamente, questo è ciò che è il mondo moderno. Non mi è piaciuto, l'ho chiuso e sono passato oltre. Noi non siamo così. E tutto sommato, una conversazione vuota. Parlo a sproposito e mi stanno convincendo che è così che deve essere. Ok.

Conosco persone che hanno superato la registrazione del venditore letteralmente in un giorno. Ma queste persone, e lo si capisce guardandole, sono curiose e non hanno fretta. E ho visto persone che hanno fatto domande sul forum per mesi, ma non fanno nulla di quello che gli viene detto e scritto.

E per la cronaca, non c'è nessun umano lì - tutta la registrazione è monitorata da un robot. Quindi puoi bussare a lungo alla sua porta e fargli passare qualcosa di sbagliato. Ma vale ancora la pena di leggere i suoi post - tutto dovrebbe essere lì. Purtroppo, ho superato da tempo tutto questo, e da allora molte cose sono cambiate, così che sostanzialmente non posso dirvi esattamente qual è il vostro problema. Leggi, per esempio, le sezioni del tuo profilo di venditore:


 

Aiuto per regolare le condizioni di apertura delle posizioni

// открытие продаж

   if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
     
// закрытие продаж
            if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              
// открытие покупок

   if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     
// закрытие покупок    
            if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])

considerando che i parametri dell'indicatore sono incorporati nel robot

------------------------------------------------------------------+
//|                                       Test advisor on ZigZag.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2010, MQL для тебя."
#property link "http://mql4you.ru"
#property strict
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

datetime Today=0;
double SL,TP;
int ticket;
//±-----------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//±-----------------------------------------------------------------+
int deinit() {return(0);}
//±-----------------------------------------------------------------+
int start()
  {

   if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
   if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
                                    //:проверим открытие новой свечи
   if(Time[0]==Today) return(0);
   Today=Time[0];
//:получим значение ZigZag на предыдущей свече
   double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1);
  
// открытие продаж

   if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,SL,TP,"macd sample",Magic,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
            if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

   if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,SL,TP,"macd sample",Magic,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
            if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
Алексей Тарабанов:

Se non puoi guadagnare, ruba.

Una frase classica di un film, non ricordo il titolo: "Se non puoi rubare, impara a guadagnare".
 
Buon pomeriggio, per qualche motivo l'EA sta caricando il terminale. Come rilevare l'errore? (((( Grazie.
 
rabanik:
Buon pomeriggio, per qualche motivo l'EA sta caricando il terminale. Come rilevare l'errore? (((( Grazie.
Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 

Buon pomeriggio. Ho iniziato a testare l'Expert Advisor su un conto reale. Non ho mai visto niente del genere con gli ordini di vendita.

 
Lomonosov1991:

Buon pomeriggio. Ho iniziato a testare l'Expert Advisor su un conto reale. Non ho mai visto niente del genere con gli ordini di vendita.

Guarda nel giornale "Esperti".

 

Buona giornata a tutti voi! Gente, ben consigliata se qualcuno lo sa.

Questo è il codice che puoi usare per ottenere i prezzi attuali.

void OnTick()
  {
   MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick))
     {
      Print(last_tick.time,": Bid = ",last_tick.bid,
            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);
     }
   else 
      Print("SymbolInfoTick() failed, error = ",GetLastError());
//---
  }

Domanda:

Qual è il modo giusto per attaccarlo?

bool  SymbolInfoTick(
   string    symbol,     // символ
   MqlTick&  tick        // ссылка на структуру
   );

Bene, che fosse possibile ottenere i prezzi attuali in un Expert Advisor per diverse coppie di valute.

Beh, non sono bravo a programmare, quindi sto cercando di capirlo!

Motivazione: