Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 920

 

Bonjour

mon bouton "démarrer sur les données historiques" n'est pas actif

Quelle pourrait être la raison ?

 
mukata:

Bonjour

mon bouton "démarrer sur les données historiques" n'est pas actif

Quelle pourrait être la raison ?

Commencer quoi ?
 
Vinin:
Les paramètres sont-ils corrects ?
Non, les paramètres sont corrects. J'ai vérifié le passage de 0 à 99. Toutes les valeurs de 1 à 99 correspondent clairement à l'affichage, mais avec une valeur de décalage de 0, les données ne correspondent pas à l'indicateur. Je n'arrive pas à comprendre comment ils sont pris et quelle est mon erreur.
 

Bon moment à tous :-)

J'ai été confronté à ce problème. J'ai une fonction qui place un ordre en attente. Mais il les place UNIQUEMENT s'il n'y a pas d'ordre au prix donné. Mais une commande est répétée au même prix d'une manière étrange. Voici la fonction qui permet de passer une commande.

int fOrderOpenBuy(double PR1, double PTP){
bool chek1=false;
   RefreshRates();
   double lts=fGetLotsSimple(OP_BUY);
      if(lts>0){      
         if(!IsTradeContextBusy()){
            //double PR=Close[1]-(150*Point);
            double slts=ND(PR1-Point*StopLoss);
            if(StopLoss==0)slts=0;
//проверка ордеров
     int  TotalOrders=OrdersTotal(); 
           for (int i=0; i<=TotalOrders; i++){
     
                 if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){
                 
                     if   (PR1==OrderOpenPrice()){chek1=true;}   
                 Print ("Чек "+OrderOpenPrice()+"  "+PR1);
                 }
           }  
        if (chek1==false) {   int irv=OrderSend(Symbol(),OP_BUYLIMIT,lts,PR1,Slippage,slts,PTP,NULL,Magic_N,0,CLR_NONE); }
               if(irv>0){
                  PlaySound("ok");
                  return(irv);
               }
               else{
                  PlaySound("timeout");
                  Print ("Error open BUY. "+fMyErDesc(GetLastError())); 
                  return(-1);
               }
         }
         else{
            static int lt2=0;
               if(TimeCurrent()>lt2+20){
                  lt2=TimeCurrent();
                  Print("Need open buy. Trade Context Busy");
               }            
            return(-2);
         }
      }
      else{
         static int lt3=0;
            if(TimeCurrent()>lt3+20){
               lt3=TimeCurrent();
               if(lts==-1)Print("Need open buy. No money");
               if(lts==-2)Print("Need open buy. Wrong lots size");                  
            }
         return(-3);                  
      }
}  

Il produit les mêmes prix ouverts, mais la ligneif(PR1==OrderOpenPrice()){chek1=true;} ne veut pas être exécutée. Quelqu'un peut-il répondre à cette question ? ? ???

 

Parce que je suis malade et fatigué de..... :-( les prix sont les mêmes et la commande est toujours ouverte.....

 
Chers professionnels ! !!!! L'EA ne fonctionne pas sur Demo et Real, mais dans le Strategy Tester tout est OK !

Pouvez-vous me dire quel pourrait être le problème ? J'ai essayé de joindre différents indicateurs, ils fonctionnent tous, mais uniquement dans le testeur de stratégie !

Dossiers :
 

Bonjour à tous !

Pouvez-vous me donner un indice...

Voici un extrait de code où il y a deux conditions lorsque la fonction Print imprime un message.

Le problème.

La fonction d'impression imprime le message à CHAQUE tic, j'ai besoin qu'elle l'imprime seulement au premier tic et au reste - reposé.

Veuillez me conseiller comment l'arrêter après le premier tic.

Merci.

si (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))

si ( OrderType ()==OP_SELL)

X1 = OrderProfit( ) ;

si (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))

si ( OrderType ()==OP_SELL)

si(X1 < 0)

Print(" LOW ", X1 ) ;

 
solnce600:

Bonjour à tous !

Pouvez-vous me donner un indice...

Voici un extrait de code où il y a deux conditions lorsque la fonction Print imprime un message.

Le problème.

La fonction d'impression imprime le message à CHAQUE tic, j'ai besoin qu'elle l'imprime seulement au premier tic et au reste - reposé.

Veuillez me conseiller comment l'arrêter après le premier tic.

Merci.

si (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))

si ( OrderType ()==OP_SELL)

X1 = OrderProfit( ) ;

si (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))

si ( OrderType ()==OP_SELL)

si(X1 < 0)

Print(" LOW ", X1 ) ;

Si c'est un rachsite une fois par barre, j'utilise

si (b!=Bars){

b=Bars ;

}

Donc le calcul entre parenthèses ne se fait qu'une fois par barre...

 
nikelodeon:

Si on parle de rachsite une fois par barre, j'utilise

si (b!=Bars){

b=Bars ;

}

Donc, le calcul qui est entre parenthèses ne se produit qu'une fois par barre...

Merci beaucoup.

J'ai besoin que l'information soit affichée sur la première barre de minute et uniquement sur celle-ci.

La version que vous proposez j'ai essayé, ..... mais elle affiche des informations sur 2 et 3 et ainsi de suite... car la deuxième barre n'est pas égale à la première et la troisième n'est pas égale à la deuxième, etc.

J'ai besoin d'imprimer les informations une fois à la première barre. Et jusqu'à ce que l'ordre suivant soit fermé par le STOP, la fonction d'impression doit se "reposer".

 
solnce600:

Merci beaucoup.

J'ai besoin que l'information soit affichée sur la première et seulement la première barre de minute.

L'option que vous proposez, je l'ai essayée, ..... mais elle affiche des informations sur 2 et 3 et ainsi de suite ... car la deuxième barre n'est pas égale à la première et la troisième n'est pas égale à la deuxième, etc.

J'ai besoin d'imprimer les informations une fois à la première barre. Et la fonctionPrint doit se "reposer" jusqu'à ce que l'ordre suivant soit fermé par le STOP.

Essayez d'utiliser un drapeau.

comme

bool flag=false ;

......

if (x1<0)&&(flag==false){Print();flag=true;}

Ensuite, l'impression se fera UNE seule fois.

Et après le déclenchement de l'arrêt, remettez le drapeau à faux et l'impression sera exécutée une fois de plus.....