[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 765

 

J'ai besoin de prix pour les ordres en attente à partir des arrêts et j'avais l'habitude d'utiliser les ordres en attente comme ceci

PRAskL=Ask-Point*TakeProfit+Spread;  // цена OpenBuyLimitOrder
PRAskS=Ask+Point*TakeProfit+Spread;  // цена OpenBuyStopOrder
PRBidL=Bid+Point*TakeProfit-Spread;  // цена OpenSellLimitOrder
PRBidS=Bid-Point*TakeProfit-Spread;  // цена OpenSellStopOrder

где 
TakeProfit - глобальная переменая и грубо говоря ее значение постояно
Spread - временая переменая,



но мне не удобно брать цену через рынок и решил напрямую вот так
for(int h=1; h<=OrdersTotal(); h++)         
{if (OrderSelect(h-1,SELECT_BY_POS)==true)   
int Tip=OrderType();                   
if(HaveBuyOrder == true)continue; 
double PRAskS=OrderStopLoss();                   
double PRAskL=OrderTakeProfit();                    
int Tip1=OrderType();                           
if(HaveSellOrder == true)continue; 
double PRBidS=OrderStopLoss();                   
double PRBidL=OrderTakeProfit();   

но оно выдает ошибки 
Ошибка № 4107 при открытиии SELL ордера 
invalid takeprofit for OrderSend function

Ошибка № 4107 при открытиии BUY ордера              
invalid takeprofit for OrderSend function

j'ai besoin d'un stop et d'un prix en yen et je dois prendre en compte les spreads

 
FoxUA:

J'ai besoin de prix pour les ordres en attente à partir des arrêts et j'avais l'habitude d'utiliser les ordres en attente comme ceci

comment puis-je résoudre ce problème, je devrais pouvoir prendre des yens aux stops et faire des profits et en même temps je devrais aussi prendre en compte les spreads.

Andrei, c'est reparti, trop peu de code, vous avez une erreur dans la fonction OrderSend, alors que nous ne pouvons pas la voir ni ses paramètres dans cette section de code. Souhaitez-vous placer des ordres en suspens basés sur des ordres stop-loss et take-profits d'ordres de marché déjà existants ?

 
ToLik_SRGV:

Andrei, encore une fois, trop peu de code, vous avez une erreur dans la fonction OrderSend, et nous ne la voyons pas, ni ses paramètres, dans cette partie du code. Souhaitez-vous placer des ordres en attente sur la base des données relatives aux seuils de perte et aux prises de bénéfices des ordres de marché déjà existants ?

Oui, c'est ça, placer des ordres en attente basés sur les données des stop-loss et take-profits des ordres de marché existants.

le code entier est trop gros, c'est un exemple de comment ça a fonctionné pour moi et comment j'ai essayé de le faire, mais ce n'est pas correct, alors comment le faire correctement ?

 

J'ai un exemple basé sur des règles qui ouvre un seul ordre, à savoir la vente.

C'est-à-dire que pour les 4 ordres en attente, le prix d'ouverture à la perte d'achat et à la perte de vente ainsi que le stop d'achat et le stop de vente sont les mêmes,

Je veux qu'une limite d'achat s'ouvre immédiatement à la clôture, par exemple acheter sur le stop,

GBPJPY,H1 : ordre de VENTE ouvert : 137.16
GBPJPY,H1 : ouvert #3897394 limite de vente 0.30 GBPJPY à 137.16 sl : 138.36 tp : 135.96 ok
GBPJPY,H1 : ordre de VENTE ouvert : 134.76
GBPJPY,H1 : open #3897393 sell stop 0.10 GBPJPY at 134.76 sl : 135.96 tp : 133.56 ok
GBPJPY,H1 : Ordre d'achat ouvert : 134.76
GBPJPY,H1 : open #3897392 buy limit 0.30 GBPJPY at 134.76 sl : 133.56 tp : 135.96 ok
GBPJPY,H1 : Ordre d'achat ouvert : 137.16
GBPJPY,H1 : open #3897391 buy stop 0.10 GBPJPY at 137.16 sl : 135.96 tp : 138.36 ok
GBPJPY,H1 : Ordre de vente ouvert : 135.96
GBPJPY,H1 : open #3897390 vendre 0.10 GBPJPY à 135.96 sl : 137.16 tp : 134.76 ok
GBPJPY,H1 : Ordre d'achat ouvert : 136.04
GBPJPY,H1 : ouvert #3897389 acheter 0.10 GBPJPY à 136.04 sl : 134.84 tp : 137.24 ok
GBPJPY,H1 : initialisé
GBPJPY,H1 entrées : StopLoss=120 ; TakeProfit=120 ; Lot=0.1 ; Magic=777 ; Slippage=5 ;
GBPJPY,H1 : chargé avec succès

for(int o=1; o<=OrdersTotal(); o++)                                   
{if (OrderSelect(o-1,SELECT_BY_POS)==true)                               
{ if (OrderSymbol()!= Curr_symb) continue;                          
  if (OrderType()>1) continue;      
{if(HaveBuyOrder == true) 
double PRAskL=OrderStopLoss();                   
double PRAskS=OrderTakeProfit();      
{                   
int Tip1=OrderType();                         
if(HaveSellOrder == true)
double PRBidL=OrderStopLoss();                   
double PRBidS=OrderTakeProfit(); } }                  
} }              
 
hedger:

Aidez-moi à comprendre.

Sur le graphique qui peut être ouvert dans le testeur après la fin des tests, les indicateurs sur lesquels l'EA est basé ne sont pas toujours dessinés. Peut-on y remédier et si oui, comment ? Répondez moi, s'il vous plait

Peut-être y a-t-il une réponse à ma question ?
 
hedger:

Peut-être y a-t-il une réponse à ma question ?

void HideTestIndicators( bool hide)
La fonction définit un drapeau pour masquer les indicateurs appelés par l'Expert Advisor. Lorsque le graphique est ouvert après le test, les indicateurs marqués du drapeau de masquage ne seront pas affichés dans le graphique de test. Les indicateurs seront marqués de l'indicateur de masquage actuel avant chaque appel.
Il faut noter que seuls les indicateurs qui sont directement appelés par l'expert testé peuvent être affichés dans le graphique de test.
 
zhuki:

void HideTestIndicators( bool hide)
La fonction définit un drapeau pour masquer les indicateurs appelés par l'Expert Advisor. Lorsque le graphique est ouvert après le test, les indicateurs marqués du drapeau de masquage ne seront pas affichés dans le graphique de test. Les indicateurs seront marqués de l'indicateur de masquage actuel avant chaque appel.
Il convient de noter que seuls les indicateurs qui sont directement appelés par le conseiller expert testé peuvent être affichés dans le graphique de test.

Merci, Igor ! J'ai dû apprendre les bases à l'aveuglette.
 

Est-ce que quelqu'un sait comment corriger le code ci-dessus pour définir la valeur des variables comme ceci

PRAskL=StopLoss de l'ordre d'achat + Spread
PRAskS=TakeProfit de l'ordre Buy + Spread
PRBidL=StopLoss Ordres de vente à la criée
PRBidS=TakeProfit Ordres de vente à distance

 
FoxUA:

Est-ce que quelqu'un sait comment corriger le code ci-dessus pour définir les valeurs des variables comme ceci

PRAskL=Ordres StopLoss Achat + Spread
PRAskS=Ordres TakeProfit Achat + Spread
PRBidL=Ordres StopLoss Vente-Spread
PRBidS=Ordres TakeProfit Vente-Spread

Si vous avez des erreurs liées à des stops erronés, faites une vérification de la taille des niveaux de stop ; utilisez-les également pour vérifier les ordres en attente - vous ne pouvez pas mettre moins que cela...

Par exemple :

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ) ; //Distance minimale de réglage du stop

 
artmedia70:

Si vous avez des erreurs liées à des stops erronés, vérifiez la taille des niveaux de stop ; utilisez-les également pour vérifier les ordres en attente - rien de moins n'est autorisé...

Par exemple :

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ) ; //Distance minimale de réglage du stop


le dernier s'ouvre sans erreur, mais il ne s'ouvre qu'avec les données de Sell. c'est une coupure du journal et ce n'est pas la distribution correcte des prix que j'ai décrite.

Les voici.

PRAskL=StopLoss Ordres d'achat + Spreads
PRAskS=Prise de bénéfice des ordres d'achat et d'écart.
PRBidL=StopLoss Ordres de vente à la criée
PRBidS=TakeProfit Ordres de vente à distance

Voici à quoi cela ressemble maintenant

PRAskL=StopLoss Ordre de vente

PRAskS=TakeProfit Ordres de vente

PRBidL=StopLoss Ordre de vente

PRBidS=TakeProfit Ordre de vente

Raison: