C'è un'interessante idea di trading. Aiutami a trovare gli errori nel codice (mql4). - pagina 17

 
Karputov Vladimir:

Inserisci il codice correttamente:Inserisci il codice correttamente nel forum(ho corretto il tuo post).

Aggiunto: raccomando anche fortemente di usare code styler - aiuterà a rilevare gli errori(Lavorare con il codice sorgente: Styler - Program Development).

Aggiungo alle forti raccomandazioni di usare funzioni aggiornate

come

int OnInit()
void OnTick()

e altri...

 
vladislavch19:

Per favore consigliatemi dove scrivere o chi può aiutarmi a correggere 2 errori nel consigliere '}'. - fine inaspettata del programma '{' - parentesi sbilanciate TMA.mq4



Oooooooooh quanti errori sintattici ci sono.

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
extern int   TakeProfit       =100;
extern int   StopLoss         =50;
extern double Lots            = 0.01;
extern int    Slippage        =5;
extern string comment         ="Продажа";
extern int    Megic           = 123;
extern string Indi            = "данные индикатора";
extern string TimeFrame="current time frame";//текущее время кадра
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;

double PriceHigh,PriceLow,SL,TP;
int ticket;
bool res;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit*=10;
      StopLoss*=10;
      Slippage*=10;
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()

  {
   PriceHigh=iCustom(Symbol(),0,"TMA with Distancer",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
   PriceLow=iCustom(Symbol(),0,"TMA with Distancer",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);

   if(Bid>=PriceHigh)
     {
      SL=NormalizeDouble(Bid+StopLoss*Point,Digits);
      TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);

      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,comment,123,0,Maroon);

      if(ticket>0)
        {
         if(OrderSelect(ticket,SELECT_BY_TICKET)==true)
            res=OrderModify(ticket,OrderOpenPrice(),SL,TP,0);
        }
     }

   if(Ask<PriceLow)
     {
      SL=NormalizeDouble(Ask-StopLoss*Point,Digits);
      TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);

      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,comment,123,0,clrDarkBlue);

      if(ticket>0)
        {
         if(OrderSelect(ticket,SELECT_BY_TICKET)==true)
            res=OrderModify(ticket,OrderOpenPrice(),SL,TP,0);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountSell()
  {
   int count=0;
   for(int trede=OrdersTotal()-1;trede>=0;trede--)
     {
      if(OrderSelect(trede,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic)
           {
            if(OrderType()==OP_SELL)count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountBuy()
  {
   int count=0;
   for(int trede=OrdersTotal()-1;trede>=0;trede--)
     {
      if(OrderSelect(trede,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic)
           {
            if(OrderType()==OP_BUY)count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
Al mattino ha deciso di scommettere sul reale, ma qualcosa ultima opzione gufo non tiene le prime opzioni sembrano appendere, e questo 6 vola e ricaricato - sulla demo poi ha funzionato bene... o è troppo buono - non lo lasciano lavorare...))
 
Сергей Криушин:
Al mattino ha deciso di scommettere sul reale, ma qualcosa ultima opzione gufo non tiene le prime opzioni sembrano appendere, e questo 6 vola e ricaricato - sulla demo poi ha funzionato bene... O è troppo buono - non lasciare che funzioni...))
Ha fatto una pulizia generale - ora in piedi... ha pulito 13 trojan dal codice... MT5 stantio... non uso robot da un po'... devono essersi accumulati...
 
Сергей Криушин:
Al mattino ha deciso di scommettere sul reale, ma qualcosa ultima opzione gufo non tiene le prime opzioni sembrano appendere, e questo 6 vola e ricaricato - sulla demo poi ha funzionato bene... o è troppo buono - non lo lasciano lavorare...))
Cosa c'è scritto nei registri quando vola via? Oggi ho finito di riscrivere il mio EA con mt5 per mt5.
 
Sergey Gritsay:
Cosa c'è scritto nei registri quando vola? Oggi ho finito di riscrivere un EA incrociato con un martin per mt5.
Non lo so, ho paura di toccarlo... Ho paura di toccarlo... e martin è per persone rischiose, o vendi solo - scommetti $1000 - pagherà profumatamente, sul mio conto reale oggi ho fatto anche $3 di profitto... questo è buono... e se non divento avido, probabilmente non lo sprecherò, così potrò aprire un altro paio di conti più tardi... grazie mille...))
 
Сергей Криушин:

ecco il rapporto... e questo è il secondo scatto...

Beh, cosa posso dire, continuate così.
 
errore 'ST' - identificatore non dichiarato test3.mq4 69 13 e possibile perdita di dati dovuta alla conversione del tipo test3.mq4 85 15

extern string TMA="Параметры";
extern int   TakeProfit       =100;
extern int   StopLoss         =50;
extern int    Megic           = 123;
extern double Lots            = 0.01;
extern int    Slippage        =5;
extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;


double PriceHigh,PriceLow,SL,TP;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   if(Digits==3 || Digits==5)
     {

      TakeProfit*=10;
      StopLoss*=10;
      Slippage*=10;
      }
      



                return(INIT_SUCCEEDED);
                
     }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+


//---

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
   void OnTick()
     {
      PriceHigh=iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
      PriceLow=iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);

  if(CountBuy()==0 && Ask<=PriceLow)

        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"tma",Megic,0,Blue);
         if(ticket>0)
           {
            TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
            ST=NormalizeDouble(Ask-StopLoss*Point,Digits);

            if(OrderSelect(ticket,SELECT_BY_TICKET))

              if( OrderModify(ticket,OrderOpenPrice(),ST,TP,0))
                Print("Ошибка");
               }
  
        }

      if(CountSell()==0 && Bid>=PriceHigh)

        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"tma",Megic,0,Red);
         if(ticket>0)
           {
            ST=NormalizeDouble(Bid+StopLoss*Point,Digits);
            TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);

            if(OrderSelect(ticket,SELECT_BY_TICKET))

               if( OrderModify(ticket,OrderOpenPrice(),ST,TP,0))
               Print("Ошибка");
           }
           }
        }
      //+------------------------------------------------------------------+
      int CountSell()
        {
         int count=0;
         for(int trede=OrdersTotal()-1;trede>=0;trede--)
           {
            if(OrderSelect(trede,SELECT_BY_POS,MODE_TRADES))
              {
               if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic && OrderType()==OP_SELL)

                  count++;
                  
              }
           }
         return(count);
        }

      int CountBuy()
        {
         int count=0;
         for(int trede=OrdersTotal()-1;trede>=0;trede--)
           {
            if(OrderSelect(trede,SELECT_BY_POS,MODE_TRADES))
              {
               if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic && OrderType()==OP_BUY)

                  count++;
                  
              }
           }
        
      return(count);
     }
//+------------------------------------------------------------------+

 
vladislavch19:
errore 'ST' - identificatore non dichiarato test3.mq4 69 13 e possibile perdita di dati dovuta alla conversione del tipo test3.mq4 85 15


avete dichiarato un nome di variabile

double PriceHigh,PriceLow,SL,TP;

ma tu scrivi un altro

ST=NormalizeDouble(Ask-StopLoss*Point,Digits);
 

Nessun errore con le variabili, "grazie".

ora avverte la possibile perdita di dati dovuta alla conversione del tipo test3.mq4 87 15

e nel tester non può aprire il file 'C:\Users\ÀÀministrator\AppData\Roaming\MetaQuotes\Terminal\F8B0CF1E1FEED3B00D2D7E193237B799\MQL4\indicators\TMA_Fair.ex4' [2]