Moins de code, plus d'action... l'écriture d'un EA - page 7

 
Maxim Kuznetsov:

Pour quel composant Ishimock voulez-vous un wrap ? et surtout, pourquoi et quel type de...
juste discuter ? vous pouvez, pourquoi pas...

PS/ Avez-vous vu l'Exxel ? Dans la vue DataFrame, les Ishimocks auront la même apparence... Comme tous les autres... Les traders travaillent avec des tableaux en fait. Un graphique n'est qu'une représentation partielle (vue) d'un tableau récapitulatif. Ces données doivent donc être traitées comme des tableaux.
Du point de vue du trader, qu'est-ce qu'un objet de programme ? Ce n'est rien. Il n'y a pas de telles choses dans sa vie pratique.

Alors, est-ce que vous faites cela pour les programmeurs, même les débutants, ou pour tout le monde ?

 
Vladimir Simakov:

J'ai écrit cela avec le contrôle de l'ouverture de ces mêmes commandes.

Je ne comprends pas. Avez-vous posté une version incomplète ?

 
Vladimir Simakov:

Pour une réflexion générale, exemple d'une classe wrapper pour Ichimoku, mais en mql4.

pourquoi rendre les choses simples si compliquées ? mt4 facilite l'utilisation des indicateurs en écrivant une seule ligne

J'avais l'habitude de l'écrire comme ça :

#define  ind1(int bar_) ind1(inp_param1, int... , int bar_) 
double ind1(int param1, int... , int bar)

{
тут можно предобработку описать, если необходимо
return(iCustom(,,,,,, bar))
}

OnTick()
{
 if(ind1(1) > ind1(2)) BUY();
}

Avec cette approche, OnTick() prend 15-20 lignes de code, où vous pouvez voir toute la logique et la modifier rapidement en cas de modifications - les conditions sont réécrites ou des indicateurs sont ajoutés.

imho, OOP vous avez fait une tâche compliquée à partir d'une tâche simple, vous devez contrôler la commutation TF, si les objets sont créés via des pointeurs, une manipulation inutile à chaque appel, augmente la consommation de mémoire..... Pourquoi ?

 
Vladimir Simakov:

Le faites-vous pour les programmeurs, même débutants, ou pour tout le monde ?

Je le fais spécialement pour les débutants.

Il répète complètement l'indicateur standard et ne permet rien de nouveau ; c'est une vieille chanson avec une nouvelle tournure. Avec de nouvelles entités, une classe de plus et une inclusion de plus.

Pourquoi le COD a-t-il été réalisé ? Elle ne peut pas être appliquée à S20 par exemple... physiquement, elle ne peut pas être appliquée à un ohlc arbitraire. Et quelle classe peut en être dérivée, où se développer à partir de là ?

 
fxsaber:

Je ne comprends pas. Avez-vous posté une version incomplète ?

Vous n'avez donc aucun contrôle sur l'ouverture/la fermeture d'une commande, avec moi tout va bien. Au moins, cela fonctionne sur Forex Club. J'ai écrit qu'aujourd'hui j'ai attaché CloseBy à la bibliothèque, il y a encore un feedback à améliorer. Par exemple, le même billet change-t-il ou non ? Forex Club ne le fait pas, mais d'autres ? En d'autres termes, nous devons mettre en œuvre le contrôle de ces éléments, modifier les champs de classe obligatoires, etc. Mais lorsque tout cela est finalisé et débogué, c'est un véritable plaisir d'écrire.

 
Vladimir Simakov:

C'est donc vous qui n'avez pas le contrôle de l'ouverture/fermeture d'un ordre, avec moi c'est très bien. Au moins sur Forex Club, cela fonctionne. Je vous ai dit que CloseBy était rattaché à la bibliothèque sur un scratch aujourd'hui, il y a encore un retour d'information à compléter et à faire. Par exemple, le même billet change-t-il ou non ? Forex Club ne le fait pas, mais d'autres ? En d'autres termes, nous devons mettre en œuvre le contrôle de ces éléments, modifier les champs de classe obligatoires, etc. Mais lorsque tout cela est finalisé et débogué, c'est un véritable plaisir de l'écrire.

Je répète une fois de plus, votre code ne fonctionne pas, le second code fonctionne.

 
Maxim Kuznetsov:

Je fais ça spécialement pour les débutants.

Il répète complètement l'indicateur standard, et ne permet rien de nouveau ; c'est une vieille chanson avec une nouvelle tournure. Avec de nouvelles entités, une classe de plus et un inlude de plus.

Pourquoi le COD a-t-il été réalisé ? Elle ne peut pas être appliquée à S20 par exemple... physiquement, elle ne peut pas être appliquée à un ohlc arbitraire. Et quelle classe peut en être dérivée, où se développer à partir de là ?

C'est uniquement pour des raisons de commodité.

Dans le segment des données :

CIchimoku ind1(EURUSD,PERIOD_M5,5,10,15) ;

CIchimoku ind1(GBPUSD,0,10,25,30,2) ;

Par conséquent, nous avons deux indicateurs, le premier sur l'échelle de temps m5, mais le second sera toujours décalé de +2 échelles de temps par rapport à l'échelle de temps actuelle du graphique.

 
fxsaber:

Encore une fois, votre code ne fonctionne pas, le second code fonctionne.

 
Vladimir Simakov:
expert Test (EURUSD,M1) loaded successfully
'35286172': market buy 0.20 EURUSD
'35286172': accepted market buy 0.20 EURUSD
'35286172': market buy 0.20 EURUSD placed for execution
'35286172': order #2214667209 buy 0.20 / 0.20 EURUSD at market done in 172.415 ms
'35286172': market sell 0.10 EURUSD
'35286172': deal #2211904952 buy 0.20 EURUSD at 1.12941 done (based on order #2214667209)
'35286172': accepted market sell 0.10 EURUSD
'35286172': market sell 0.10 EURUSD placed for execution
'35286172': order #2214667210 sell 0.10 / 0.10 EURUSD at market done in 171.843 ms
'35286172': deal #2211904953 sell 0.10 EURUSD at 1.12936 done (based on order #2214667210)
expert Test (EURUSD,M1) removed

Ça ne marche pas.


Et voici le deuxième code

script Test4 (EURUSD,M1) loaded successfully
'35286172': market sell 1.00 EURUSD
'35286172': accepted market sell 1.00 EURUSD
'35286172': market sell 1.00 EURUSD placed for execution
'35286172': order #2214667234 sell 1.00 / 1.00 EURUSD at market done in 174.294 ms
'35286172': deal #2211904975 sell 1.00 EURUSD at 1.12936 done (based on order #2214667234)
'35286172': market buy 1.00 EURUSD
'35286172': accepted market buy 1.00 EURUSD
'35286172': market buy 1.00 EURUSD placed for execution
'35286172': order #2214667235 buy 1.00 / 1.00 EURUSD at market done in 175.016 ms
'35286172': deal #2211904976 buy 1.00 EURUSD at 1.12941 done (based on order #2214667235)
'35286172': close position #2214667235 buy 1.00 EURUSD by position #2214667234 sell 1.00 EURUSD
'35286172': accepted close position #2214667235 buy 1.00 EURUSD by position #2214667234
'35286172': deal #2211904977 sell 1.00 EURUSD at 1.12936 done (based on order #2214667236)
'35286172': close position #2214667235 buy 1.00 EURUSD by position #2214667234 done in 67.893 ms
script Test4 (EURUSD,M1) removed
Ça marche.
 
Vladimir Simakov:

Ceci est purement pour des raisons de commodité.

Dans le segment des données :

CIchimoku ind1(EURUSD,PERIOD_M5,5,10,15) ;

CIchimoku ind1(GBPUSD,0,10,25,30,2) ;

Par conséquent, nous avons deux indicateurs, le premier sur l'échelle de temps m5, tandis que le second sera toujours décalé de +2 échelles de temps par rapport à l'échelle de temps actuelle du graphique.

Mais est-il normal qu'avant d'accéder aux indicateurs de différents horizons temporels, vous deviez taper sur un tambourin et faire un peu de danse ?

Qui le fera ? apparemment l'utilisateur - qu'il apprenne le zen et le pouvoir du non-chinois simultanément :-)

La plate-forme représente des interfaces pratiques d'indicateurs et leur décomposition en tampons. Alors, pourquoi répéter quelque chose qui a déjà été fait et qui a été bien fait ? Pour montrer que vous êtes familier avec le mot "classe" quelque chose en fait...

Raison: