Profit Generator EA - page 13

 
jojolalpin:
Je n'aime pas avoir des ordres sans SL ou sans TP et lorsque j'utilise superclose(), il n'y a pas de TP tant que le trailing n'est pas activé. Je me demande donc pourquoi ne pas fixer un takeprofit initial (avant que superclose n'en fixe un) pour être sûr en cas de crash informatique. C'est pourquoi j'ai proposé deux fois la valeur de la variable takeprofit.

Aussi pour initier sur le plan de test, les paramètres sont :

Stoploss : 10 à 30 ?

Takeprofit : 20 à 100 ?

TimeFrames : M1 M15 H4 Daily Weekly..

Devises : 12 de la sélection de Holyguy7 ? seulement celles avec un petit spread (<=5) ?

Ce ne sont que des suggestions.

Ok, je vois ce que vous voulez dire maintenant. C'est assez facile à faire. J'utilise un serveur dédié avec un temps de fonctionnement de 100%, donc je ne pense pas à ce genre de choses.

Et voici quelques notes sur le superclose(). J'espérais pouvoir avoir la possibilité de suivre les prix des TS par le numéro de ticket, de sorte que vous puissiez définir MaxTrades à plus de 1 ET être en mesure de suivre par moins de 10 pips.

void SuperClose(){

for(int i=0;i<OrdersTotal();i++){

if(OrderSelect(i,SELECT_BY_POS)){

if(OrderSymbol()==Symbol() && OrderMagicNumber()==ID){//Pulls in order that meets the criteria for processing

int num=0;int pos=0;

for(int b=0;b<21;b++){// this (loopB) compares the ticket# of the selected order against the number stored in the ticket array

if(tsTicket==OrderTicket() ){

num++; pos=b;// if ticket numbers match, pos is the position in the array where the trailing data is stored

Print("(",pos,") Ticket ",tsTicket[pos]," found. SL is ",tsPrice[pos]);

break;

}

}

if(num==0){ // if the loopB did not find a matching ticket number it is time to initialize the data

for(int j=0;j<21;j++){

if(tsTicket[j]==0){// this is looking for the earliest instance within the array to store the data

pos=j;

break;

}

}

tsTicket[pos]=OrderTicket();// setting the ticket number

tsok[pos]=false;// this is to determine when trailing kicks in

Print("(",pos,") New ticket initialized = ",tsTicket[pos]);

}

if (OrderType()==OP_SELL) {

if (!tsok[pos] && (OrderOpenPrice()-Ask>=TSactivation*Point || TSactivation==0 ) ) {// if the trailing factor is false, but it has hit the activation point continue

tsPrice[pos]=Ask+TrailPips*Point;// this is the new trailinf stop price

tsok[pos]=true;// it's ok to proceed with trailing stop

if(TrailPips>8){// if this distance from the current price to the new stop, then modify the order.

ModifyStopLoss(Ask+TrailPips*Point);//modifies order

}

}

if (tsok[pos] && Ask+TrailPips*Point < tsPrice[pos] ){//if the position is gaining in profit

tsPrice[pos]=Ask+TrailPips*Point;

if(TrailPips>8){

ModifyStopLoss(Ask+TrailPips*Point);

}

}

if (tsok[pos] && Ask >= tsPrice[pos] ){// if the postion hits the stop price

CloseOrder(2);

Print("Order ",tsTicket[pos]," Closed from TS");

}

}

if (OrderType()==OP_BUY) {// reverse of SELL

if(!tsok[pos] && (Bid-OrderOpenPrice() >= TSactivation*Point || TSactivation==0 ) ) {

tsPrice[pos]=Bid-TrailPips*Point;

tsok[pos]=true;

if(TrailPips>8){

ModifyStopLoss(Bid-TrailPips*Point);

}

}

if (tsok[pos] && Bid-TrailPips*Point > tsPrice[pos] ){

tsPrice[pos]=Bid-TrailPips*Point;

if(TrailPips > 8){

ModifyStopLoss(Bid-TrailPips*Point);

}

}

if (tsok[pos] && Bid <= tsPrice[pos] ){

CloseOrder(1);

Print("Order ",tsTicket[pos]," Closed from TS");

} } } } }

for(i=0;i<21;i++){// this searches the array for ticket numbers that are now obsolete due to an order that has closed

if(tsTicket>0){

bool found=false;

for(b=0;b<OrdersTotal();b++){

OrderSelect(b,SELECT_BY_POS);

if(tsTicket==OrderTicket()){

found=true;

break;

}

}

if(!found){// if there are matching ticket numbers in the trade pool and the array then nothing happens

tsTicket=0;tsPrice=0;tsok=false;// if there is an obolete ticket the the data is reset. And the next new ticket data can occupy this space

Print("Array pos ",i," Cleaned");

} } } }
 
 

Voici l'EA avec la modification du TP après que UseClose soit vrai. Il doublera le TP à des fins de sécurité. Merci Jo !

Dossiers :
 
dazminder:
J'espérais tester le Profit Generator 2.4. Il n'a placé aucune transaction depuis 630GMT...... A-t-il placé d'autres transactions pour quelqu'un ? Veuillez me tenir au courant, car je pense que c'est un bon EA en principe.

Vous obtiendrez moins de transactions car le premier critère est que la longueur de la barre actuelle doit être supérieure à la valeur de LongBar. Je recommanderais une bougie plus petite sur le TF inférieur.

 
jojolalpin:
ok, mais en tant que débutant j'attendrai que quelqu'un de plus expérimenté donne des limites hautes et basses aux différents paramètres.

Je teste actuellement la 2.4 avec les presets de Holyguy7 et à partir de 1h00 du matin je n'ai fait que 3 trades (1:10 sell usdcad sur daily BAD ; 7:29 et 14:29 gbpusd sur H1 le premier 28 pips et le second réellement perdant). Cela semble être normal, quelqu'un a eu les mêmes résultats ?

En outre, pour permettre des tests sur plusieurs horizons temporels, j'ai changé trois lignes sur la version 2.6 :

1 -

extern int ID ;

devient

extern int ID_BASE=100000 ; pour donner un nombre à PG_2.6 (ici 1)

2 - J'ai ajouté la ligne suivante juste en dessous de "int Bar ;".

int ID ;

3 - J'ai ajouté la fonction init()

int init(){

ID=ID_BASE+Période() ; return(0) ;

}

Ainsi, sur un graphique journalier, le nombre magique sera 101440 et apparaîtra dans le commentaire du trade. Il sera plus facile d'analyser les résultats pour chaque période et chaque type de paramètres. Je ne l'ai pas encore testé mais cela devrait fonctionner.

et pour un graphique spécifique vous aurez un ID fixe et non un nombre aléatoire.

De plus, nous pourrions peut-être ajouter un takeprofit initial utilisant la fonction superclose. Juste en cas de panne d'ordinateur.

PS : J'ai fait d'autres modifications que je dois effacer avant de poster. Dites-moi si vous êtes intéressé.

Excellente idée ! La seule chose à garder à l'esprit est si vous allez exécuter différents tests sur la même paire et TF de changer l'ID de base. J'ai ajouté ces changements, mais j'ai fait une petite modification. ...parce que la période peut changer à partir de la variable "period" (différente du graphique), j'ai fait ceci à la place:ID=ID_BASE+P() ; return(0) ;

Le P() renvoie la période réelle utilisée par le programme. Excellente idée... avec quels autres changements avez-vous joué ?

Voici la version 2.6.2.

 

rien de plus depuis le dernier post à ce sujet (gbpusd toujours perdant) mais je fonctionne sur H1 et daily et j'ai gardé longbar=15.

attendons cette nuit (globalement pour les paires jpy)

 

Quelqu'un peut me suggérer des paramètres de test (SL & TP) ?

Je n'utiliserai pas de limite horaire sur les principales devises et sur M1, M5, M15, H1 et H4.

 
jojolalpin:
rien de plus depuis le dernier post à ce sujet (gbpusd toujours perdant) mais je fonctionne sur H1 et daily et j'ai gardé longbar=15. attendons cette nuit (globalement pour les paires jpy)

J'ai remarqué que le GBPUSD semble mieux fonctionner sur le graphique journalier :

TP : 40

SL : 30

Pas de Timefilter

Barre longue : 10

Cela semble plus fiable. L'EURUSD et l'USDCHF semblent mieux fonctionner sur le graphique H1 avec la barre longue à 15 et le timefliter activé.

J'ai du mal en ce moment car les principales paires de devises me donnent du fil à retordre avec cet EA. Quelqu'un a réussi sur les principales paires de devises ? ?? Si oui, merci de poster vos résultats.

 

Salut

HolyGUY,

Quel est le progrès aujourd'hui sur ce nouvel EA

 
kumawat:
Bonjour

HolyGUY,

Quel est le progrès aujourd'hui sur ce nouvel EA

Eh bien, il y a eu un certain retracement à partir d'hier à cause de certaines des principales paires de devises. Toujours en hausse de plus de 20% pour la semaine et actuellement le système n'a AUCUNE transaction ouverte.

Je vais poster mes résultats dans quelques heures. J'avais le GBPUSD sur l'échelle de temps H1 mais je pense qu'il est plus fiable sur l'échelle de temps D1 comme les autres. Je vous tiendrai au courant.

Raison: