[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 500

 

Dites-moi, si je ne suis pas un expert en programmation.

Est-ce que cette chose regarde l'historique lors de l'ouverture d'une commande ou pas ?

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:

Dis-moi, si je ne suis pas bon en programmation.

Est-ce que cette chose regarde dans l'historique lors de l'ouverture d'une commande ou pas ?



1) utilisez la balise SRC lorsque vous insérez du code

2) supprimer ce qui est commenté.

3) dites-nous ce que vous voulez voir et quelle est la différence.

 
ilunga:

1) utilisez la balise SRC lorsque vous insérez du code

2) supprimer ce qui est commenté

3) Dites-moi ce que vous voulez voir et quelle est la différence.

src inséré

Qu'est-ce qui est commenté ?

il y a un écart dans le nombre de transactions rentables dans le testeur, c'est pourquoi j'ai demandé

 

Je veux apprendre comment dessiner des niveaux sur le graphique en fonction des valeurs de l'indicateur dans une fenêtre séparée. Par exemple, si le MACD franchit le niveau 0 de bas en haut, une ligne est tracée sur le graphique en fonction du bas de la barre où le franchissement a lieu. Lorsque le MACD est croisé du haut vers le bas, la ligne du haut sera tracée en conséquence. J'ai écrit quelque chose, ça compile sans erreurs, mais rien ne se passe. Pouvez-vous m'aider ?

#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 inséré

Je ne sais pas ce qui a été commenté

il y a un écart dans le nombre de trades rentables dans le testeur

il y a toujours 2 objets dans la correspondance qui sont comparés.

le testeur ne correspond pas à la démo sur la même période ? Par exemple, parce que la répartition dans le testeur est différente

 
Ichimo:

Je veux apprendre comment dessiner des niveaux sur le graphique en fonction des valeurs de l'indicateur dans une fenêtre séparée. Par exemple, si le MACD franchit le niveau 0 de bas en haut, une ligne est tracée sur le graphique en fonction du bas de la barre où le franchissement a lieu. Lorsque le MACD est croisé du haut vers le bas, la ligne du haut sera tracée en conséquence. J'ai écrit quelque chose, ça compile sans erreurs, mais rien ne se passe. Aidez-moi, s'il vous plaît.

ligne est au moins 2 points ;)

Buffer[i]=level;

c'est un point, les points adjacents sont probablement nuls. c'est pourquoi la ligne ne peut être tracée nulle part.

 //Почему выскакивает ощибка если написать просто iLow[i]?
parce que Low[i] n'a pas de "i" au début.
 
Vinin:

Où est ce panier ?
Je peux vous diriger vers votre panier... :)
 
Existe-t-il un moyen de diviser la distance entre les deux prix en 3-4 parties, et pas seulement de les diviser, mais aussi de trouver le prix de chacune des parties résultantes ?
 
sss2019:
Existe-t-il un moyen de diviser la distance entre les deux prix en 3-4 parties, et pas seulement de les diviser, mais aussi de trouver le prix de chacune des parties résultantes ?
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:

une ligne est au moins 2 points ;)

il s'agit d'un point, les points voisins sont probablement nuls. par conséquent, il n'y a aucun endroit où tracer la ligne.

parce que Low[i] n'a pas de "i" au début.



Donc, je dois soit créer un point précédent, soit dessiner une flèche au lieu d'une ligne. Merci, je vais continuer à me creuser les méninges.
Raison: