[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 500

 

Ditemi, se non sono un esperto di programmazione.

Questa cosa guarda la cronologia quando si apre un ordine o no?

extern int dDay;
//extern bool fl;

int init()
  {
      return(0);
  }

int deinit()
  {
      return(0);
  }

int start()
  {
      double MA2,MA3;
      double Fr,Fr1;
      double SAR;
      double prof;
      int total,cnt;
      
      MA2 = iMA(NULL,0,2,0,MODE_SMA,PRICE_CLOSE,0);
      MA3 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,0);
      Fr = iForce(NULL,0,2,MODE_SMA,PRICE_CLOSE,0);
      Fr1 = iForce(NULL,0,2,MODE_SMA,PRICE_CLOSE,1);
      
      //SAR = iSAR(NULL,0,0.2,2,0);
      
      if((Hour() == 22) && (OrdersTotal() == 0) && (dDay != Day()))
      {
         //if(Open[0] > MA) // BUY
         if(MA3 < MA2)
         //if(SAR < Open[0])
         {
            OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+0.0010,"",2,0,Blue);
            //fl = true;
         }
         //if(Open[0] < MA) // SELL
         if(MA3 > MA2)
         //if(SAR > Open[0])
         {
            OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",1,0,Red);
            //fl = true;
         }
      
         dDay = Day();
      }
      
      /*if((Hour() == 8) && (OrdersTotal() == 1) && fl)
      {
         fl = false;
         if(OrdersTotal() != 0)
         {
            total = OrdersTotal();
            for(cnt=0;cnt<total;cnt++)
            {  
               OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);         
               prof = OrderProfit() / 10;
               if(prof <= -10)
               {
                  if(OrderType()==OP_BUY)
                  {
                     OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);   
                     OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",1,0,Red);
                  }
                  if(OrderType()==OP_SELL)
                  {
                     OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
                     OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+0.0010,"",2,0,Blue);
                  }
               }
            }
         }
      }*/
  
      
      if(OrdersTotal() != 0)
      {
         total = OrdersTotal();
         for(cnt=0;cnt<total;cnt++)
         {  
            OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);                     
            prof = OrderProfit() / 10;
            if(prof >= 4)
            {
               if(OrderType()==OP_BUY)
               {
                  OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);   
               }
               if(OrderType()==OP_SELL)
               {
                  OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
               }
            }
         }
      }

      return(0);
  }
 
baykanur:

Ditemi se sono un programmatore che non sa molto di programmazione.

Questa cosa guarda nella storia quando si apre un ordine o no?



1) usare il tag SRC quando si inserisce il codice

2) cancellare ciò che è commentato.

3) dirci cosa volete vedere e qual è la discrepanza

 
ilunga:

1) usare il tag SRC quando si inserisce il codice

2) rimuovere ciò che è commentato

3) dimmi cosa vuoi vedere e qual è la discrepanza

src inserito

Cosa viene commentato?

c'è una discrepanza nel numero di affari redditizi nel tester, ecco perché ho chiesto

 

Voglio imparare a disegnare livelli sul grafico a seconda dei valori dell'indicatore in una finestra separata. Per esempio, se il MACD attraversa il livello 0 dal basso verso l'alto, una linea viene disegnata sul grafico in base al minimo della barra in cui avviene l'attraversamento. Quando il MACD è attraversato dall'alto verso il basso, la linea su High sarà disegnata di conseguenza. Ho scritto qualcosa, compila senza errori, ma non succede niente. Potete aiutarmi per favore?

#property  indicator_chart_window
#property  indicator_buffers 1
#property  indicator_color1  Blue

double    Buffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Buffer);

   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double level;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++)
      
      double    macd = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
      double    macd1 = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1);
      
      if (macd > 0 && macd1 < 0)
      {
      level = iLow("EURUSD",PERIOD_M1,i); //Почему выскакивает ощибка если написать просто iLow[i]?
      Buffer[i]=level;
      }
      else if (macd < 0 && macd1 > 0)
      {
      level = iHigh("EURUSD",PERIOD_M1,i); //Почему выскакивает ощибка если написать просто iHigh[i]?
      Buffer[i]=level;
      }
   return(0);
  }
 
baykanur:

src inserito

Non so cosa sia stato commentato

c'è una discrepanza nel numero di operazioni redditizie nel tester

ci sono sempre 2 oggetti nella partita che vengono confrontati.

il tester non corrisponde alla demo sullo stesso periodo? Per esempio, perché la diffusione nel tester è diversa

 
Ichimo:

Voglio imparare a disegnare livelli sul grafico in funzione dei valori dell'indicatore in una finestra separata. Per esempio, se il MACD attraversa il livello 0 dal basso verso l'alto, una linea viene disegnata sul grafico secondo il minimo della barra in cui avviene l'attraversamento. Quando il MACD è attraversato dall'alto verso il basso, la linea su High sarà disegnata di conseguenza. Ho scritto qualcosa, compila senza errori, ma non succede niente. Per favore, aiutatemi.

la linea è di almeno 2 punti ;)

Buffer[i]=level;

è un punto, quelli adiacenti sono probabilmente zero. ecco perché la linea non ha nessun punto da disegnare

 //Почему выскакивает ощибка если написать просто iLow[i]?
perché Low[i] non ha una "i" all'inizio
 
Vinin:

Dov'è quel cesto?
Posso indirizzarti al tuo cestino... :)
 
C'è un modo per dividere la distanza tra i due prezzi in 3-4 parti, non solo dividerli, ma anche conoscere il prezzo di ciascuna delle parti risultanti?
 
sss2019:
C'è un modo per dividere la distanza tra i due prezzi in 3-4 parti, non solo dividerli, ma anche conoscere il prezzo di ciascuna delle parti risultanti?
double price1;

double price2;

...

if (price1 > price2)
{
   double delta = price1 - price2;
   double level1 = price2 + delta*0.25;
   double level2 = price2 + delta*0.5;
   double level3 = price2 + delta*0.75;
}
=)
 
ilunga:

una linea è almeno 2 punti ;)

questo è un punto, quelli vicini sono probabilmente zero. quindi non c'è nessun posto dove tracciare la linea

perché Low[i] non ha una "i" all'inizio



Quindi, devo creare un punto precedente o disegnare una freccia invece di una linea. Grazie, continuerò a scervellarmi.