Comment coder ? - page 47

 

Merci MrPip

J'ai compris où vous vouliez en venir, je vais y réfléchir et vous demander à nouveau si je suis bloqué.

salutations

 
MrPip:
Corrections en rouge ci-dessous. Robert

Merci Robert... ça m'a aidé...

 

Décompte des barres avec les indicateurs MTF

MTF = indicateurs multi time frame

double BarCountDownInSec()

{

double g ;

g=Time[0]+Period()*60-TimeCurrent() ;

retour(g) ;

}

La fonction ci-dessus donne le deuxième compte à rebours pour les barres du graphique actuel. Ainsi, si elle est placée sur un graphique de 5 minutes, elle affichera le décompte des secondes pour chaque barre de 5 minutes.

Q : Comment puis-je obtenir le décompte des secondes pour une barre de 15 minutes (c'est-à-dire 3x barres de 5 minutes), lorsque je suis dans un graphique de 5 minutes, donc un décompte de 15 minutes de 6.00 à 6.15. puis 6.15 à 6.30, alors que je suis dans un graphique de 5 minutes ?

 

Problème avec ma programmation (BUG)

Bonjour,

Quelqu'un peut-il m'aider à résoudre ce bug ? J'ai presque réussi, mais l'histogramme n'apparaît pas à moins que je ne recompile le code.

S'il vous plaît aider !!! S'il vous plaît s'il vous plaît s'il vous plaît

Salutations

Dossiers :
 

Problème d'iCustom

Quel est le nom de la chaîne de caractères de cet indice que je dois utiliser pour une partie iCustom d'un EA ?

J'ai essayé

MT4-LevelStop-Reverse-vBO-4

MT4-LevelStop-Reverse- (en anglais)

MT4-LevelStop-Reverse

vBO-4

vB0.4

vtsbh2483-

MT4-LevelStop-Reverse-" + INDICATOR_VERSION + "(

Je n'ai donc aucune idée de ce qu'il faut faire ensuite.

ou dois-je mettre les noms de chaîne ATRMode, Manual Mode, etc.

Toute aide serait la bienvenue

Dossiers :
 

Quelqu'un peut-il voir l'erreur ? Je ne vois pas où se trouve l'erreur dans ce code. Je continue à obtenir. Toute aide pour l'identifier serait la bienvenue. Merci

LongSig Variable non définie

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

//| Calculer les positions ouvertes |

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

int CalculateCurrentOrders() {

achète=0 ; vend=0 ;

string symbol=Symbol() ;

//----

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

{

si(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continuer ;

if(OrderSymbol()==Symbol() && OrderMagicNumber()==expertId)

{

if(OrderType()==OP_BUY || OrderType()==OP_BUYSTOP) achète++ ;

if(OrderType()==OP_SELL || OrderType()==OP_SELLSTOP) vend++ ;

}

}

//---- retourner le volume des ordres

if(buys>0) return(buys) ;

sinon return(-sells) ;

}

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

//| Vérifier les conditions des ordres ouverts |

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

void CheckForSignals() {

buysig=false ;

sellsig=false ;

closebuy=false ;

closesell=false ;

double MOM = iCustom (NULL,0, "Momentum-ZL",MOMPeriod,0,shift) ;

double SRL = iCustom (NULL,0, "MT4-LevelStop-Reverse-vBO-4",UseATRMode,NonATRStopPips,ATRPeriod, ATRMultiplier,ATRSmoothing,UpArrowColor,DnArrowColor,ArrowDistance,233) ;

double SRS = iCustom (NULL,0, "MT4-LevelStop-Reverse-vBO-4",UseATRMode,NonATRStopPips,ATRPeriod, ATRMultiplier,ATRSmoothing,UpArrowColor,DnArrowColor,ArrowDistance,234) ;

double QQE_RsiMa = iCustom(NULL,0, "QQE",0,shift) ;

double QQE_TrLevelSlow = iCustom(NULL,0, "QQE", 1, shift) ;

double QQE_RsiMaPrev = iCustom(NULL,0, "QQE",0,shift + 1) ;

double QQE_TrLevelSlowPrev = iCustom(NULL,0, "QQE", 1, shift + 1) ;

double Pivot = iCustom (NULL,0, "Pivot Points Multitimeframe",midpivots,Fhr,daily,weekly,monthly,1,shift)

bool LongSig = QQE_RsiMaPrev QQE_TrLevelSlow >50.0 ;

bool ShortSig = QQE_RsiMaPrev > QQE_TrLevelSlowPrev && QQE_RsiMa < QQE_TrLevelSlow<50.0 ;

bool LongSig2 = MOM>0.0 ;

bool ShortSig2 = MOM<0.0 ;

bool LongSig3 = SRL>Pivot ;

bool ShortSig3 = SRS<Pivot ;

buysig = LongSig && LongSig2 && LongSig3 ;

sellsig = ShortSig && ShortSig2 && ShortSig3 ;

closebuy=sellsig ;

closesell=buysig ;

}

void CheckForOpen() {

if (last==Time[0]) return ;

int res,ord ;

double entrée, stop, profit ;

ord=CalculateCurrentOrders() ;

si (ord!=0) CheckForClose() ;

ord=CalculateCurrentOrders() ;

//---- conditions d'achat

if (buys<ConsecutiveTrades && buysig) {

res=OpenAtMarket(OP_BUY,Lots) ;

if (res<0) Print("Error opening BUY order : ",ErrorDescription(GetLastError())) ;

sinon last=Time[0] ;

}

//---- conditions de vente

if (-sells<ConsecutiveTrades && sellsig) {

res=OpenAtMarket(OP_SELL,Lots) ;

if (res<=0) Print("Error opening SELL order: ",ErrorDescription(GetLastError())) ;

sinon last=Time[0] ;

}

}

int OpenAtMarket(int mode,double lot) {

int res,tr,col ;

double openprice,sl,tp ;

tries=0 ;

while (res<=0 && tries<OrderTriesNumber) {

tr=0 ; while (tr<5 && !IsTradeAllowed()) { tr++ ; Sleep(2000) ; }

RefreshRates() ;

if (mode==OP_SELL) {

openprice=Bid ;

col=Red ;

} else {

//openprice=nd(Ask) ;

prix ouvert=Demande ;

col=Bleu ;

}

res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+expertId,expertId,0,col) ;

essais++ ;

}

return(res) ;

}

Informatique corrigée

 

Essayez le premier de votre liste avec un chiffre zéro 0 au lieu de la lettre O pour vB0-4.

Robert

Beno:
Quel est le nom de la chaîne de cet indicateur que je dois utiliser pour une partie iCustom d'un EA ?

J'ai essayé

MT4-LevelStop-Reverse-vBO-4

MT4-LevelStop-Reverse-

MT4-LevelStop-Reverse

vBO-4

vB0.4

vtsbh2483-

MT4-LevelStop-Reverse-" + INDICATOR_VERSION + "(

Je n'ai donc aucune idée de ce qu'il faut faire ensuite.

ou dois-je mettre les noms de chaîne ATRMode, Manual Mode, etc.

Toute aide serait la bienvenue
 

Merci Mr Pips

C'est réglé

 
MrPip:
Corrections en rouge ci-dessous. Robert

J'ai essayé ceci mais cela ne semble pas fonctionner... Je ne veux qu'une transaction par jour...

for(int a=0;a<OrdersTotal();a++)

{

si (OrderSelect(a,SELECT_BY_POS,MODE_TRADES) == true)

{

if (OrderSymbol()== Symbol() && OrderMagicNumber()== Magic_Number)

{

si (TimeDay(OrderOpenTime()) >= TimeDay(TimeCurrent())) Trade = false ;

si (TimeDay(OrderOpenTime()) < TimeDay(TimeCurrent())) Trade = true ;

}

}

}
 
antone:
j'ai essayé mais cela ne semble pas fonctionner... je ne veux qu'une seule transaction par jour...

J'ai utilisé cette méthode dans d'autres EA et elle fonctionne correctement.

Je vérifie les transactions fermées aujourd'hui au lieu de celles ouvertes aujourd'hui.

L'utilisation au départ est

if (LastTradeClosedToday()) return(0) ;

// code ici pour ouvrir de nouvelles transactions

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

//| LastTradeClosedToday |

//| Vérifier l'historique pour voir si la dernière transaction a été fermée aujourd'hui |

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

bool LastTradeClosedToday()

{

int cnt, total ;

bool Closed ;

total = HistoryTotal() ;

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

{

OrderSelect (cnt, SELECT_BY_POS, MODE_HISTORY) ;

if(OrderSymbol()!=Symbol()) continue ;

if (OrderMagicNumber() != MagicNumber) continue ;

Fermé = faux ;

si (OrderType() == OP_BUY)

{

si (TimeDay(OrderCloseTime()) == TimeDay(TimeCurrent()))

{

Closed = true ;

}

cnt = 0 ;

}

si (OrderType() == OP_SELL)

{

si (TimeDay(OrderCloseTime()) == TimeDay(TimeCurrent()))

{

Closed = true ;

}

cnt = 0 ;

}

}

return (Closed) ;

}