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.
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{
staticint lt2=0;
if(TimeCurrent()>lt2+20){
lt2=TimeCurrent();
Print("Need open buy. Trade Context Busy");
}
return(-2);
}
}
else{
staticint 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 ? ? ???
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 !
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".
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.....
Bonjour
mon bouton "démarrer sur les données historiques" n'est pas actif
Quelle pourrait être la raison ?
Bonjour
mon bouton "démarrer sur les données historiques" n'est pas actif
Quelle pourrait être la raison ?
Les paramètres sont-ils corrects ?
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.
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.....
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 !
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 ) ;
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...
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".
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.....