En savoir plus sur les autres "Stratégies de trading". - page 4

 
doshur: La moyenne d'entrée est toujours ok, lorsque vous avez une taille de lot énorme et que vous voulez sortir, il pourrait ne pas y avoir de volume pour vous permettre de sortir au prix que vous voulez.

quand les nouvelles seront publiées, je me demande si ce système peut survivre comme aud ces jours-ci.

Imo, tout peut survivre si la taille du lot est assez petite. Si cela en vaut la peine pour vous, c'est une toute autre question. Pouvez-vous soumettre un système qui peut faire mieux sur Aud ces jours-ci ? Juste pour rappel, ce n'est pas un fil de discussion sur les systèmes rentables des autres. C'est un fil de discussion où mon intention est que les gens soumettent différents experts et passent en revue le bon et le mauvais de la stratégie. Rentable ou non, cela n'a pas d'importance.
 

J'ai trouvé un bug dans la fonction YesLstTrdWin().

bool YesLstTrdWin(){
    if(!PositionSelect(CurSetSymbol)){return(false);}
    ulong   PosType=PositionGetInteger(POSITION_TYPE);
    ulong   PosOpTime=PositionGetInteger(POSITION_TIME);
    double  PosPrice=PositionGetDouble(POSITION_PRICE_CURRENT);
    HistorySelect(PosOpTime,TimeCurrent());
    int DealsTotal=HistoryDealsTotal();
    for(int i=DealsTotal-1; i>=0; i--){
        ulong DealTicket=HistoryDealGetTicket(i);
        ulong DealEntry=HistoryDealGetInteger(DealTicket,DEAL_ENTRY);
        if(DealEntry!=DEAL_ENTRY_IN){continue;}
        ulong DealMagic=HistoryDealGetInteger(DealTicket,DEAL_MAGIC);
        if(DealMagic!=SystemMagic1){continue;}
        string DealSymb=HistoryDealGetString(DealTicket,DEAL_SYMBOL);
        if(DealSymb!=CurSetSymbol){continue;}
        ulong  DealType=HistoryDealGetInteger(DealTicket,DEAL_TYPE);
        double DealPrice=HistoryDealGetDouble(DealTicket,DEAL_PRICE);
        if(DealType==DEAL_TYPE_BUY  && PosPrice>DealPrice){return(true);}
        if(DealType==DEAL_TYPE_SELL && PosPrice<DealPrice){return(true);} //This Line Was Left Out.
        return(false);
    }   return(false);
}

J'ai oublié le dernier contrôleur de vente qui l'a amené à faire la moyenne à l'intérieur de la fourchette de position.

*Auparavant, le calcul de la moyenne à l'intérieur et/ou à l'extérieur des grilles peut être une stratégie efficace pour les systèmes de tendance.

 
Ubzen:

J'ai trouvé un bug dans la fonction YesLstTrdWin().

J'ai oublié le dernier contrôle de vente qui l'a amené à faire la moyenne à l'intérieur de la fourchette de position.

*Dans un autre ordre d'idée : faire la moyenne à l'intérieur et/ou à l'encontre des grilles peut être une stratégie efficace pour les systèmes de tendance.

Salut Ubzen,

J'ai vu ce fil de discussion il y a un certain temps et j'avais l'intention d'y contribuer, désolé d'avoir tardé, j'espère que cela deviendra l'un de ces mini forums de discussion au sein de mql5. Le fait que vous utilisiez un signal aléatoire non optimisé pour des profits réguliers est certainement prometteur. Je dois encore étudier le signal, en fait je viens de voir le code aujourd'hui et j'ai zoomé directement sur votre fonction MaxDDCurrency(). Il a une ligne que je pense pourrait être un bug ...

Est-ce que cela devrait

if(TempDD>MaxDDCurency){return;}

être ceci ?

if(TempDD<=MaxDDCurency){return;}

Sur une autre note générale. Dans quelle mesure pensez-vous que les données de prix dans le testeur de stratégie sont fiables, notamment en ce qui concerne le spread ?

PS : Je posterai bientôt l'un des miens également.

 

Vous semblez aussi appeler

BrkEveEquity();

sur le tick. Ne devriez-vous pas l'appeler à partir de la fonction HighestEquity(), c'est-à-dire lorsqu'un nouveau sommet d'équité est atteint ? Je n'ai pas encore testé l'EA moi-même dans le testeur de stratégie mais j'ai pensé que je pourrais avoir une idée de ce que vous pensiez lorsque vous avez écrit ceci.

 
ssn: Bonjour Ubzen, j'ai vu ce fil de discussion il y a un certain temps et j'avais l'intention d'y contribuer, désolé d'avoir tardé, j'espère que cela deviendra l'un de ces mini-fils de discussion dans mql5. Le fait que vous utilisiez un signal aléatoire non optimisé pour des profits réguliers est certainement prometteur. Je dois encore étudier le signal, en fait je viens de voir le code aujourd'hui et j'ai zoomé directement sur votre fonction MaxDDCurrency(). Il a une ligne que je pense pourrait être un bug ...

Est-ce que ça devrait être ça ? Sur une autre note générale. Dans quelle mesure pensez-vous que les données de prix dans le testeur de stratégie sont fiables, notamment en ce qui concerne le spread ? PS : Je posterai bientôt une de mes stratégies.

Fonction complète :

void MaxDDCurency(){
    int TempDD=AcountEquity-HighesEquity;
    if(TempDD>MaxDDCurency){return;}
    MaxDDCurency=TempDD;
}

1) Définit le Maximum DrawDown en devise. Cette fonction définit la variable globale du même nom à -Negative lowest drawdown dans la devise du compte. Comme sa valeur est négative, vous devrez penser en sens inverse. Exemple Highest_Equity=10,000. Account_Equity=9,500. Je veux le drawdown maximum en $ de -500. Le résultat est [9,500 - 10,000]. Ensuite, si le drawdown temporaire est inférieur à -500, je veux que cela soit enregistré comme le nouveau MaxDD.

2) Les spreads sont beaucoup plus élevés dans le testeur de stratégie que ce que la plupart des gens paieraient aujourd'hui. C'est mon opinion, car beaucoup de courtiers proposent des écarts inférieurs à 10 %. Les données de prix n'ont pas beaucoup d'importance. L'EA ne traite pas dans les barres d'une minute, il traite seulement à l'ouverture de la barre m1 du graphique auquel il est attaché. A moins que vos données ne manquent beaucoup de barres m1, cette méthode devrait être suffisamment fiable.

3) Le résultat que j'ai reçu était le premier résultat que j'ai obtenu après l'avoir mis en place. Après cela, j'ai effectué d'autres tests qui n'étaient pas très prometteurs. Mais même avec les 3 autres tests que j'ai effectués, le système a fini légèrement rentable ou légèrement non rentable. Mais oui, le fait est qu'un système aléatoire et non optimisé a quand même survécu à la crise de 2008 jusqu'en 2012. Peut-être que l'optimisation d'un tel système pourrait faire l'objet d'une étude plus approfondie. Exemple : votre direction personnelle, **on ne peut pas faire pire que le hasard ;)

4) Bien sûr, postez un système que vous avez toujours trouvé intéressant et tout ce qui vous dérange dans ce système. Je vais essayer de suggérer des idées qui pourraient contrer ces problèmes.

 
ssn: Vous semblez également appeler On tick. Ne devriez-vous pas l'appeler depuis la fonction HighestEquity(), c'est-à-dire lorsqu'un nouveau sommet d'équité est atteint ? Je n'ai pas encore testé l'EA moi-même dans le testeur de stratégie mais j'ai pensé que je pourrais avoir une idée de ce que vous pensiez lorsque vous avez écrit ceci.

Fonction entière :

void BrkEveEquity(){
    if(SysMagTotCnt()!=0){return;}
    BrkEveEquity=HighesEquity;
    BrkEveEquTme=(int)TimeCurrent();
    SysCloseMode=false;
}
J'utilise le Break-Even Equity depuis un certain temps déjà. Parfois, cette fonction se trouve dans la fonction Equity_High mais je crois que je l'ai supprimée de cet emplacement il y a longtemps pour les raisons suivantes. 1) Si le Break-Even Equity se trouve dans Equity_High, je n'ai pas besoin du BE car je peux utiliser Equity_High à la place. 2) Je veux définir l'Equity_High lorsqu'un nouveau Account_Equity High est atteint et non lorsque System_Magic_Total_Count==0. 3) Je veux définir le Break_Even lorsque All_Symbols est fermé. Cela offre les avantages suivants lors des transactions en direct. Lorsque vous fermez toutes les positions, vous pouvez souffrir d'un slippage négatif. Votre nouvel objectif devient Equity_High + Target$$$ au lieu de Account_Balance + Target$$ par exemple.
 

- Oui le DD est négatif, je n'avais pas vu ça. Thx

- Je pense que même les prix ouverts m1 ont un bid et un ask. Si votre entrée est sur le bid, vous devrez sortir sur le ask (par exemple si vous avez vendu à découvert). J'ai fait des tests avec des données mt5 et avec un spread fixe personnalisé, et les résultats sont très différents.

- Je pense que votre approche avec le signal aléatoire est la meilleure si votre entrée est basée sur les techniques. Si vous pouvez éviter toute optimisation, cela devrait être mieux... Je pense. ;)...

- Le système que je vais poster utilise SOM... en fait ce sera une classe réutilisable. J'ai besoin de faire quelques ajustements finaux...

- Ok, c'est clair pour BE. Maintenant, le MinPerMinLot est une variable fixe que vous utilisez pour définir votre volume en proportion du temps depuis que toutes les positions ont été fermées ?

Documentation on MQL5: Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants
Documentation on MQL5: Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants
  • www.mql5.com
Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants - Documentation on MQL5
 
ssn:

- Oui le DD est négatif, je n'avais pas vu ça. Thx

- Je pense que même les prix ouverts m1 ont un bid et un ask. Si votre entrée est sur le bid, vous devrez sortir sur le ask (par exemple si vous avez vendu à découvert). J'ai fait des tests avec des données mt5 et avec un spread fixe personnalisé, et les résultats sont radicalement différents.

- Je pense que votre approche avec le signal aléatoire est la meilleure si votre entrée est basée sur les techniques. Si vous pouvez éviter toute optimisation, cela devrait être mieux... Je pense. ;)...

- Le système que je vais poster utilise SOM... en fait ce sera une classe réutilisable. J'ai besoin de faire quelques ajustements finaux...

- Ok, c'est clair pour BE. Maintenant, le MinPerMinLot est une variable fixe que vous utilisez pour définir votre volume en proportion du temps depuis que toutes les positions ont été fermées ?

1) Je vous en prie.

2) Je suis d'accord. J'aimerais que nous puissions corriger les spreads dans mt5. Mais il est aussi important de tester avec des spreads réalistes et de ne pas se leurrer.

3) D'après mon expérience, avec les systèmes optimisés, le test en direct sur un mois est généralement totalement différent des résultats attendus. Cette manière de tester produit habituellement les statistiques attendues lors de mes tests en direct sur .... mais meurt aussi habituellement de la même manière qu'elle meurt dans le testeur de stratégie.

4) k

5) Oui. A peu près, mais c'est beaucoup mieux de le voir comme "depuis que l'équité du compte était >= l'équité du seuil de rentabilité". J'ai retiré le Set_Break_Even_Time de la fonction Break_Even_Equity. Je me rends compte que la définition de variables individuelles avec leur propre fonction set_function est beaucoup plus facile à réutiliser que de les regrouper dans une autre fonction set_function.

Je pense faire un système de suivi de tendance ensuite en ajoutant des lots au fur et à mesure que la tendance progresse.

 
Ubzen:

1) De rien.

2) Je suis d'accord. J'aimerais que l'on puisse corriger les spreads dans mt5. Mais il est également important de tester avec des spreads réalistes et de ne pas se leurrer.

3) D'après mon expérience, avec les systèmes optimisés, le test en direct sur un mois est généralement totalement différent des résultats attendus. Cette manière de tester produit habituellement les statistiques attendues lors de mes tests en direct sur .... mais meurt aussi habituellement de la même manière qu'elle meurt dans le testeur de stratégie.

4) k

5) Oui. A peu près, mais c'est beaucoup mieux de le voir comme "depuis que l'équité du compte était >= l'équité du seuil de rentabilité". J'ai retiré le Set_Break_Even_Time de la fonction Break_Even_Equity. Je me rends compte que la définition de variables individuelles avec leur propre fonction set_function est beaucoup plus facile à réutiliser que de les regrouper dans une autre fonction set_function.

Je pense faire un système de suivi de tendance ensuite en ajoutant des lots au fur et à mesure que la tendance progresse.

4)...
Dossiers :
SignalSOM.mqh  24 kb
 
ssn: 4)...
? ?? Avez-vous les éléments supplémentaires selon les règles. #1, #3 et #4 semblent être manquants.