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

 
noob1:
Bonjour. J'essaie de calculer le StopLoss à partir du bas et du haut de la première barre, après avoir placé un ordre en attente, pour l'achat et la vente respectivement. Mais je n'ai obtenu aucun résultat, seulement 130 erreurs, c'est tout. Merci d'avance.
C'est le même billet ? Et la distance jusqu'au stoploss peut être trop faible.
 
simpleton:

Vérifiez si OrderOpenPrice() est trop proche de SL, et si les stops sont "du bon côté du prix". Vous pouvez lire ici:

Les prix StopLoss et TakeProfit ne peuvent pas être trop proches du marché. La distance minimale de stop en pips peut être obtenue en utilisant la fonction MarketInfo() avec le paramètre MODE_STOPLEVEL. L'erreur 130 (ERR_INVALID_STOPS) sera générée en cas d'arrêts erronés ou non normalisés.

Dans ce cas, c'est-à-dire pour un ordre en attente, le "marché" est son "prix ouvert en attente".

Je l'ai refait et cela semble fonctionner. Merci.
 
Pouvez-vous me dire comment trouver l'adresse IP actuelle de l'ordinateur à partir de MT ?
 
Heroix:
Pouvez-vous me dire comment obtenir l'adresse IP actuelle de l'ordinateur à partir de MT ?
WebRequest pour http://ipecho.net/plain et lecture du fichier reçu. Ou WinAPI.
 

Dans letesteur de stratégie, la commandeMarketInfo(Symbol(),MODE_TICKVALUE) = 0( !) Cela se produit dans les situations où, par exemple, l'instrument est EURUSD et la devise de la balance est RUR ..... et dans d'autres combinaisons. Si je comprends bien, la devise de la balance doit être la même que le nom de la deuxième devise de la paire de devises. Sinon, il renvoie une valeur nulle (dans le testeur de stratégie), ce qui rend impossible la réalisation de tests avec les combinaisons souhaitées. Comment résoudre ce problème ?

 
ikatsko:

Dans letesteur de stratégie, la commandeMarketInfo(Symbol(),MODE_TICKVALUE) = 0( !) Cela se produit dans les situations où, par exemple, l'instrument est EURUSD et la devise de la balance est RUR ..... et dans d'autres combinaisons. Si je comprends bien, la devise de la balance doit être la même que le nom de la deuxième devise de la paire de devises. Sinon, il renvoie une valeur nulle (dans le testeur de stratégie), ce qui rend impossible la réalisation de tests avec les combinaisons souhaitées. Comment résoudre ce problème ?

La mise en évidence n'est pas correcte ! Je calcule en euros avecEURUSD, GBPUSD, etc. Seulement quand il est activé, il peut donner 0 jusqu'à ce que la première donnée soit reçue, c'est pourquoi je mets une conditionavant les calculs avecTICKVALUE que si != 0;

Dans le testeur,MarketInfo() peut ne pas fonctionner, donc connaissant le prix approximatif d'un tick, je le fixe avec la condition IsTesting() || IsOptimization() || IsVisualMode().

 

Veuillez m'aider à créer des hiboux qui négocient sur deux paires en même temps.

Si sur la première paire la variable sera comme ceci

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits) ;

comment ce sera pour le deuxième ?

Ou bien le code pour ouvrir une transaction par le premier caractère sera

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green) ;

à quoi ressemblera le code du deuxième symbole

 
pavlicos:

Veuillez m'aider à créer un hibou qui négocie deux paires simultanément.

Si sur la première paire la variable sera comme ceci

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits) ;

comment ce sera pour le deuxième ?

Ou bien le code pour ouvrir une transaction par le premier caractère sera

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green) ;

à quoi ressemblera le code du deuxième symbole

NULL ouSymbol() signifie une paire de graphiques. Vous pouvez utiliser la chaîne mySymbol = Symbol() pour les distinguer, puis vous pouvez utiliser 2 copies de l'EA sur des graphiques correspondants et assigner différents symboles magiques pour être sûr ! Bonne chance !
 
pavlicos:

Veuillez m'aider à créer un hibou qui négocie deux paires simultanément.

Si sur la première paire la variable sera comme ceci

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits) ;

comment ce sera pour le deuxième ?

Ou bien le code pour ouvrir une transaction par le premier caractère sera

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green) ;

à quoi ressemblera le code du deuxième symbole

// в OnTick()
double open_nzdusd_CUR=GetNormalizeOpenPriceBySymbol("NZDUSD",Period(),0);    // цена открытия текущей свечи NZDUSD
double open_audusd_M15=GetNormalizeOpenPriceBySymbol("AUDUSD",PERIOD_M15,1);  // цена открытия прошлой свечи AUDUSD на M15
//+------------------------------------------------------------------+

// функция вне тела OnTick()
//+------------------------------------------------------------------+
double GetNormalizeOpenPriceBySymbol(string sy, int timeframe, int shift) {
   int digits=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
   return(NormalizeDouble(iOpen(sy,timeframe,shift),digits));
}
//+------------------------------------------------------------------+

Avec l'ouverture, voici juste le concept lui-même :

string symbol="AUDUSD";
double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
double pt=SymbolInfoDouble(symbol,SYMBOL_POINT);
int spread=(int)SymbolInfoInteger(symbol,SYMBOL_SPREAD);
int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
int value=(int)SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL);
int level=(value==0)?spread*2:value;
//---
double sl_b=(StopLoss==0)?0:NormalizeDouble(fmin(ask-StopLoss*pt,ask-(level+1)*pt),digits);
double tp_b=(TakeProfit==0)?0:NormalizeDouble(fmax(ask+TakeProfit*pt,ask+(level+1)*pt),digits);
ticket_b=OrderSend(symbol,OP_BUY,Lots,ask,3,sl_b,tp_b,"",0,0,clrGreen);
//---
double sl_s=(StopLoss==0)?0:NormalizeDouble(fmax(bid+StopLoss*pt,bid+(level+1)*pt),digits);
double tp_s=(TakeProfit==0)?0:NormalizeDouble(fmin(bid-TakeProfit*pt,bid-(level+1)*pt),digits);
ticket_s=OrderSend(symbol,OP_SELL,Lots,bid,3,sl_s,tp_s,"",0,0,clrRed);

sans vérifier les codes de retour du serveur commercial.

 
Aujourd'hui, le navigateur du terminal s'est soudainement étendu sur toute la largeur de l'écran, masquant les cartes ! Il était toujours de la même largeur que le Market Watch ! Je cherche et ne trouve pas comment le faire revenir à sa taille précédente ! Aidez qui sait comment faire face à cette nouvelle nuisance ! Merci ! !!