Comment coder ? - page 123

 
InTrance:
N'essayez pas, faites-le

Je suis au travail... et le port metatrader est bloqué ici.

 

Je suis encore novice en programmation et j'ai du mal à ajouter les fonctionnalités suivantes à cette simple EA :

1. Take Profit

2. Stop Loss

3. Trailing Stop

4. Nombre de pips pour activer le trailing stop

//---- input parameters

extern double Lots=0.1;

extern int Slippage=5;

int MagicNum = 98760;

bool longPosOpened, shortPosOpened;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

double crossup = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,0, 1);

double crossdown = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,1,1);

if (crossup != EMPTY_VALUE)

{

if (!PosOpened(OP_BUY))

{

CloseAllOpenAndPendingTrades();

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Symbol(),MagicNum,0);

}

}

else if(crossdown != EMPTY_VALUE)

{

if (!PosOpened(OP_SELL))

{

CloseAllOpenAndPendingTrades();

OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Symbol(),MagicNum,0);

}

}

return(0);

}

//+------------------------------------------------------------------+

bool PosOpened(int orderType)

{

int total=OrdersTotal();

for(int cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderType() == orderType)

{

return(true);

}

}

return(false);

}

void CloseAllOpenAndPendingTrades()

{

int total = OrdersTotal();

for(int i=total-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

if(Symbol() != OrderSymbol()) continue; // important! only close positions of current currency pair

int type = OrderType();

bool result = false;

switch(type)

{

//Close opened long positions

case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 200);

break;

//Close opened short positions

case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 200);

break;

//Close pending orders

case OP_BUYLIMIT :

case OP_BUYSTOP :

case OP_SELLLIMIT :

case OP_SELLSTOP : result = OrderDelete( OrderTicket() );

}

}

return(0);

}

 

Comment détecter un saut de sar parabolique?

J'utilise actuellement ce code pour détecter un saut :

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // s'il y a un saut vers le haut

Mais cela ne semble pas fonctionner correctement.

Comment puis-je détecter si le psar est au-dessus ou au-dessous de mes barres ?

TIA

 
: : utiliser votre proxy dans metatrader...

IN10TION

ssvl:
je suis au travail... et le port metatrader est bloqué ici
 
: : comparez votre résultat sar avec une clôture actuelle [0]
ssvl:
J'utilise actuellement ce code pour détecter un saut :

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // s'il y a un saut vers le haut

Mais cela ne semble pas fonctionner correctement.

Comment puis-je détecter si l'indicateur est au-dessus ou au-dessous de mes barres ?

TIA
 

Hey IN10TION, connaissez-vous un bon moyen de vérifier si une transaction vient de se terminer afin que l'EA ne place pas une autre transaction (ré-entrée) jusqu'au prochain signal ? Mon EA vérifie les conditions de transaction jusqu'à, disons, 10 barres, mais si une condition de vente a déjà été remplie dans les premières barres et qu'elle a été fermée, je veux que l'EA arrête de vérifier jusqu'à l'offset de 10 barres et attende le prochain signal réel ?

Merci

 

Utilisez la fonction OrderHistory().

Lux

 
luxinterior:
Utilisez la fonction OrderHistory(). Lux

Merci, mais je ne sais pas comment cela fonctionne. Je ne veux pas vraiment savoir si un ordre vient d'être fermé, mais plutôt si un ordre a été ouvert et fermé dans un certain nombre de barres. Ensuite, il suffit de placer une autre transaction à l'entrée du signal principal suivant. J'essaie toujours d'éliminer les réentrées rapides de transactions lorsqu'un ordre vient d'être ouvert et fermé mais que les conditions de transaction sont toujours remplies. Je veux qu'il n'y ait qu'une seule transaction par signal principal, de sorte que même si les conditions de transaction sont toujours valides, il n'y ait pas de nouvelle transaction si elle a déjà été effectuée sur ce signal (y compris le décalage).

Laissez-moi voir si je peux vous expliquer avec un exemple. Il se peut que ce soit quelque chose d'inévitable.

EG : Disons que j'utilise le QQE et le VQI comme point d'entrée d' un signal (le QQE se croise et le VQI passe de l'achat à la vente ou vice-versa).

Maintenant j'ajoute une option SignalOffset de disons 6 barres parce que le croisement QQE et le signal VQI peuvent ne pas se produire exactement sur la même barre.

Maintenant, disons qu'il y a une transaction valide dans les 2 barres l'une de l'autre lorsque le QQE et le VQI s'accordent, donc maintenant une transaction est placée mais j'ai un TP de 10 pips et la barre bouge de 15 pips, mon TP est atteint et la transaction est fermée. Les conditions du trade sont toujours remplies grâce à mon Offset de 6 barres, maintenant un autre trade est placé (ré-entrée) mauvais si cette ou ces deux barres se déplacent de 100 pips et que mon TP est de 10, je viens d'avoir 10 trades, mauvais Je ne veux qu'un trade par signal (Offset inclus).

Est-ce que cela a du sens ? Je voudrais quand même que le trade se fasse dans les 6 barres si un signal opposé se produit et que l'autre trade a été fermé.

Merci

 
J'aimerais que le système soit capable d'effectuer des transactions dans les 6 barres si un signal opposé se produit et que l'autre transaction est encore fermée... : créez une variable [switch], s'il y a déjà un ordre de vente effectué, il arrête d'effectuer d'autres ventes (la valeur du switch est -1) et ne se réajuste que lorsqu'il y a un signal d'achat et un ordre d'achat effectué (la valeur du switch est 1)... un surplus auquel vous pouvez penser est une réinitialisation de la minuterie, au cas où il y aurait une grande tendance à la hausse ou à la baisse, vous pouvez avoir 2 ou 3 ventes avec une sorte d'intervalle entre les mêmes ordres (timing).

IN10TION

matrixebiz:
Merci mais je ne suis pas sûr de savoir comment cela fonctionne. Je ne veux pas vraiment savoir si un ordre vient d'être fermé mais plutôt si un ordre a été ouvert et fermé dans un certain nombre de barres. Ensuite, il suffit de placer une autre transaction au prochain signal d'entrée principal. J'essaie toujours d'éliminer les réentrées rapides de transactions lorsqu'un ordre vient d'être ouvert et fermé mais que les conditions de transaction sont toujours remplies. Je veux qu'il n'y ait qu'une seule transaction par signal principal, de sorte que même si les conditions de transaction sont toujours valides, il n'y ait pas de nouvelle transaction si elle a déjà été effectuée sur ce signal (y compris le décalage).

Laissez-moi voir si je peux vous expliquer avec un exemple. Il se peut que vous ne puissiez rien y faire.

EG : Disons que j'utilise le QQE et le VQI comme point d'entrée du signal de transaction (le croisement du QQE et le VQI passent de l'achat à la vente ou vice-versa).

Maintenant j'ajoute une option SignalOffset de disons 6 barres parce que le croisement QQE et le signal VQI peuvent ne pas se produire exactement sur la même barre.

Maintenant, disons qu'il y a une transaction valide dans les 2 barres l'une de l'autre lorsque le QQE et le VQI s'accordent, donc maintenant une transaction est placée mais j'ai un TP de 10 pips et la barre bouge de 15 pips, mon TP est atteint et la transaction est fermée. Les conditions du trade sont toujours remplies grâce à mon Offset de 6 barres, maintenant un autre trade est placé (ré-entrée) mauvais si cette ou ces deux barres se déplacent de 100 pips et que mon TP est de 10, je viens d'avoir 10 trades, mauvais Je ne veux qu'un trade par signal (Offset inclus).

Est-ce que cela a du sens ? Je voudrais quand même qu'il trade dans les 6 barres si un signal opposé se produit et que l'autre trade a été fermé.

Merci
 

Partage de données entre 2 applications metatrader

J'essaie d'écrire des données dans un fichier à partir d'un metatrader afin de les lire à partir d'un second metatrader.

Le problème est que lorsque j'essaie d'écrire dans le fichier c:\ je reçois le message d'erreur "absolute file path "C:\EURUSD.txt" is not allowed".

Une idée ou un autre moyen de partager des données entre deux applications metatrader ?

Raison: