Comment coder ? - page 77

 

Ichimoku Kinko Hyo Cross n'ouvre que des Buy's !

Bonjour à tous,

J'ai programmé ces dernières semaines et je m'en sors plutôt bien. Mais je suis arrivé à un point où mon dernier système assez simple que j'essaie de coder ne fonctionne pas pour moi. Je l'ai réécrit environ cinq fois, en utilisant un code différent, j'ai essayé de créer des conseillers experts et de modifier d'autres stratégies croisées, mais le système n'ouvre jamais que des transactions d'achat. (Parmi d'autres problèmes que j'ai) toute aide serait très appréciée car il semble que cela pourrait être un système rentable. (Ok tout le monde semble penser cela en les programmant, mais les backtests manuels barre par barre montrent un résultat positif).

LE SYSTÈME : Configuration du graphique

L'indicateur Ichimoku Kinko Hyo avec les paramètres par défaut 9,26,52. Afficher uniquement les Tenkan-Sen et Kijun-Sen, cacher les lignes Senkou et Chikou.

PREMIÈRE ENTRÉE (expliquée pour un long/achat - idem pour une vente dans la direction opposée)

Tenkan-Sen croise Kijun-Sen et le prix est au-dessus de KIJUN-Sen. Stop loss le montant de l'écart de la paire en dessous de Tenkan-Sen. Trace avec stop à Kijun-Sen - écart de pips sauf si un signal inverse se produit (où vous fermez).

RE-ENTREE (parfois quelques transactions sont arrêtées avant d'attraper le "grand tour").

Si le stop est atteint, avant le croisement de Tenkan-Sen et Kijun-Sen, une position peut être réouverte si le prix clôture au-dessus du TENKAN-Sen et que le Tenkan-Sen est toujours au-dessus du Kijun-Sen. Stop loss comme précédemment.

RÉSUMÉ

Entrez dans une position longue lorsque le Tenkan-Sen croise le Kijun-Sen. Stop loss à une distance de spreads en dessous du Kijun-Sen. Si vous êtes arrêté avant le croisement et que le renversement se produit, vous pouvez ré-entrer une position longue si le prix augmente au-dessus du Tenkan-Sen. Pas de prise de profit, il suffit de suivre le stop loss sur le Kijun-Sen.

Ce système a tendance à aimer les tendances, mais les pertes ne devraient pas être trop importantes sur les marchés en range-bound. Je prévois d'effectuer des transactions sur la TF quotidienne, mais il est possible d'en utiliser d'autres lorsque j'aurai mis en place l'Expert. En fait, sur certains marchés que j'ai testés, l'EA est rentable pour le moment, avant même qu'il ne fonctionne correctement !

MQ4 joint si quelqu'un peut déchiffrer où je me trompe !

Merci,

Howard

P.S. Ce serait génial de recevoir de l'aide sur ce sujet car c'est mon anniversaire demain et ce serait très bien de recevoir de l'aide !

Je m'excuse également auprès de tous les praticiens de l'Ichimoku qui pensent qu'il ne devrait pas être automatisé car il est destiné à négocier le marché "en un coup d'œil". Cependant, je pense que l'indicateur est si merveilleux, en particulier le Kijun-Sen, qui se négocie juste en dehors des retracements dans de nombreuses tendances longues, qu'il est parfait pour l'automatisation !

Dossiers :
ikh_pro.mq4  5 kb
 
gmax111:
J'écris un EA qui achète et vend les croix EMA. Je veux le filtrer en vérifiant si les fermetures des 10 dernières barres étaient au-dessus de l'EMA avant d'acheter... quelqu'un peut-il m'aider ???

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

 
Michel:

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

Merci beaucoup pour ça Michel...

C'était l'une de ces choses qui me laissait perplexe, mais maintenant je me sens comme un idiot pour avoir trop réfléchi... haha... MERCI ENCORE ! !!

 

Comment coder !

Je pense que cette Ea est très bonne...

Mais n'ouvre qu'une seule commande dans une paire... pourquoi ?

 

Vers adria

adria

Je me suis intéressé à votre problème et j'ai joué avec.

Il semble que tu doives faire quelque chose comme ceci :

D'abord, déclarez Var1, Var2 globalement.

Puis essayez ceci :

if (Hour() == 12) Var1 = iHigh(NULL,0,1) ;

si (Hour() == 12) Var2 = iLow(NULL,0,1) ;

Le Metaeditor Navigator donne une explication de Hour().

Cherchez TSD pour "trading hours" pour plus d'exemples.

Si votre EA est prometteur, pourriez-vous m'en envoyer une copie ?

Big Be

 

À Big Be

J'ai créé un EA similaire. Vous devez changer la valeur TIME en fonction de votre

temps du graphique.

Dossiers :
 

besoin d'aide avec cette fonction closealltrades

J'ai remarqué que les courtiers requotent parfois le prix, ce qui empêche l'EA de fermer l'ordre.

l'ordre. Comment puis-je empêcher l'EA de continuer jusqu'à ce que tous les ordres selon son nombre magique soient fermés ?

ordres selon son nombre magique, peut-être mettre une fonction sleep pour 5 secondes et une boucle

une boucle while pour vérifier et fermer les ordres avant de continuer. Voici la fonction

fonction closealltrades. Merci de votre aide et merci d'avance.

void CloseAllTrades()

{

int rc ;

int cnt ;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;

si (OrderMagicNumber()==GetMagicNumber())

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow) ;

if(!rc)

Log("Close error="+GetLastError()) ;

}

}

}

 
hedge4x:
Je remarque que le courtier requote parfois le prix, ce qui empêche l'EA de fermer.

l'ordre. Comment puis-je empêcher l'EA de continuer jusqu'à ce que tous les ordres selon son nombre magique soient fermés ?

selon son nombre magique est fermé, peut-être mettre une fonction sleep pendant 5 secondes et

une boucle while pour vérifier et fermer les ordres avant de continuer. Voici la fonction

fonction closealltrades. Merci de votre aide et merci d'avance.

void CloseAllTrades()

{

int rc ;

int cnt ;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;

si (OrderMagicNumber()==GetMagicNumber())

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow) ;

if(!rc)

Log("Close error="+GetLastError()) ;

}

}

}

bool IsAllClosed ; //Global variable

void CloseAllTrades()

{

int cnt;

IsAllClosed = true;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

IsAllClosed = IsAllClosed && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

}

}

void start()

{

while(!IsAllClosed) {CloseAllTrades(); return;}

...

 

merci

Merci Michel pour ton aide.

Je vais l'essayer.

 

Cette ligne while(!IsAllClosed) {CloseAllTrades() ; return;}

dans le démarrage principal fermera toutes les positions ouvertes si MT descend et que je le relance.

et que je le redémarre. Existe-t-il un moyen de mettre cette ligne

dans la fonction closealltrades pour qu'elle ne ferme pas toutes les positions ouvertes

après le redémarrage de MT4 ?

Merci.