C'est ce que j'obtiens lorsque j'essaie le mode multi time frame (l'indicateur du post ci-dessus).
ATTENTION : La vidéo doit être rechargée
ATTENTION : La vidéo doit être téléchargée à nouveau
Pour autant que je sache, tout fonctionne comme il est supposé fonctionner.
Mladen
Je m'excuse de ne pas avoir présenté mon problème avec clarté. Vous avez raison sur le diff_Levelms 0.0 qui fonctionne correctement, mais l'ajout de diff_Levelms était de permettre des changements mineurs tels que l'étendue à rejeter comme .0002 pour EURUSD ou .02 pour USDJPY. Apparemment, mon calcul de diff n'est pas utilisé par le calcul de trend1.
si (ma1[i]>ma2[i]) trendfm[i] =1; si (ma1[i]<ma2[i]) trendfm[i] =-1; si (ma1[i]>ma3[i]) trendfs[i] =1; si (ma1[i]<ma3[i]) trendfs[i] =-1; si (ma2[i]>ma3[i] && diffums > diff_Levelms) trendms[i] =1; n'est pas utilisé par le calcul de trend1 si (ma2[i]<ma3[i] && diffdms > diff_Levelms) trendms[i] =-1; non utilisé par le calcul de la tendance 1
J'ai téléchargé l'indicateur "Outsidebar Trendline V2" ci-joint mais pour une raison quelconque, il ne se met pas à jour sur la prochaine barre/candle.
la barre/candle suivante. Lorsque l'on change de cadre temporel, il fonctionne bien, mais sur la barre suivante, dans ce cadre temporel, il ne fonctionne plus.
Un expert pourrait-il m'aider à faire en sorte que l'indicateur se rafraîchisse également sur les barres suivantes ?
Mon ami a écrit cet EA basé sur l'indicateur vertex, nous n'avons pas été en mesure d'exécuter un backtest après qu'il l'ait créé. S'il vous plaît pouvez-vous m'aider à corriger l'erreur qui l'empêche d'être en mesure de backrest. mais il nécessite beaucoup de mise à jour une fois qu'il est nettoyé
Merci et apprciez humblement
// ------------------------------------------------------------------------------------------------// ------------------------------------------------------------------------------------------------#include <stdlib.mqh>
#include <stderror.mqh>
#property copyright"reddevil"#property link""#property version"3.0";
// 19-09 minimum of 4 periods before the next order.// v1.2 check alternate timeframe for spike// v2.0 uses 3.01a indicator with alternate timeframe//v3.0 red crossing blue as entry// trailing after line cross// ------------------------------------------------------------------------------------------------// VARIABLES EXTERNAS// ------------------------------------------------------------------------------------------------//// check for candle externint magic = 668899;
string progName="VertexPro3";
string key = "vertex 3.0";
// Configurationexternstring CommonSettings = "---------------------------------------------";
externint user_slippage = 2;
externdouble max_spread = 3.0;
externint user_tp = 0; // min TPexternint user_sl = 50; // max SL//extern int AlternateTF = 30 ; // 30 minsexterndouble Entry_line =10; // 10 sell, -10 buy// extern double Entry_pips = 10; // from highest high or lowest lowexternstring TakeProfit_trigger ="------------------------------------------";
externint TPdefault_line =25;
externdouble BBvalue1 =10.0;
externint BBTP_line =15;
//extern bool DailyFilter=true;externbool NewsFilter=false;
externint MinsBeforeNews=1440;
externint MinsAfterNews=60;
externint maxOrders=3; //max 3externstring Trailing = "----------------------------------------------------";
externint UseTrailing=2 ; // 0 - no trailing, 1- normal; 2-trail after TP lineexternint TrailStartPips=8;
externint Trailpips=5;
externint TrailStepPips=3;
externstring MoneyManagementSettings = "---------------------------------------------";
// Money Managementexternbool money_management = false;
externdouble min_lots = 0.1;
externint risk=1;
externint progression = 0; // 0=none | 1:ascending | 2:martingaleexternint GMToffset=2;
int arrLgt=3;
int buy_magic[3];
int sell_magic[3];
int buy_tickets[3];
int sell_tickets[3];
// Lotsdouble buy_lots[3];
double sell_lots[3];
// Current Profitdouble buy_profit[3];
double sell_profit[3];
//SLdouble sell_sl[3];
double buy_sl[3];
//TPdouble sell_tp[3];
double buy_tp[3];
// Open Pricedouble buy_price[3];
double sell_price[3];
datetime buy_time; // last buytimedatetime sell_time;
// Indicatordouble rsi=0;
// Number of ordersint buys = 0;
int sells = 0;
double total_buy_profit=0,total_sell_profit=0;
double total_buy_lots=0, total_sell_lots=0;
double buy_max_profit=0, buy_close_profit=0;
double sell_max_profit=0, sell_close_profit=0;
// Indicator// ------------------------------------------------------------------------------------------------// VARIABLES GLOBALES// ------------------------------------------------------------------------------------------------// indicadores// Cantidad de ordenes;int orders = 0;
int direction= 0;
double max_profit=0, close_profit=0;
double last_order_profit=0, last_order_lots=0;
// Colorescolor c=Black;
// Cuentadouble balance, equity;
int slippage=0;
// OrderReliableint OldHist=0;
double SL,PT,_spread;
int newMagic1,newMagic2;
int curMagic;
int Tframe = PERIOD_H1;
datetime OldTime;
int _DSTtime=0;
int pendingTicket=-1;
bool NoNews=true;
int mBefore, mAfter;
// ------------------------------------------------------------------------------------------------// START//void init()
{
if (Digits==4 || Digits==2)
{
slippage = user_slippage;
PT=Point;
}
elseif (Digits==5 || Digits==3)
{
slippage = 10*user_slippage;
PT=Point*10;
}
if(maxOrders > 3) maxOrders=3;
newMagic1 = StrToInteger(IntegerToString(TPdefault_line) + IntegerToString(magic));
newMagic2 = StrToInteger(IntegerToString(BBTP_line) + IntegerToString(magic));
}
int start()
{
double point = MarketInfo(Symbol(), MODE_POINT);
double dd=0;
string DST = "Yes";
bool encontrada;
balance=AccountBalance();
equity=AccountEquity();
if(TimeCurrent() - OldTime > 25)
{
RefreshRates();
OldTime=TimeCurrent();
}
_spread = NormalizeDouble(MathAbs(Ask-Bid)/PT,2);
if(IsTradeAllowed() == false)
{
Comment("nTrade not allowed.");
return(0);
}
/*if(StringLen(DoubleToStr(TPdefault_line)) > 3 || StringLen(DoubleToStr(BBTP_line)) > 3)
{
Comment("nTPdefault or BBTP too long");
return(1);
} */if(BBTP_line > TPdefault_line)
{
Comment("nBBTP must be less than TPdefault");
return(1);
}
/*if(!IsTesting())
if (Period() != Tframe)
{
Comment("\n ERROR :: Invalid Timeframe, Please Switch to "+ IntegerToString(Tframe));
return(0);
} */if(TimeDaylightSavings()==0)
{
DST="No";
}
else _DSTtime=1;
if(!IsTesting())
{
//Comment(StringConcatenate("\nLSMA02a is running.\nNext order lots: ",CalcularVolumen(),"\nTake profit ($): ",CalcularVolumen()*10*user_tp,"\nStop loss ($): ",CalcularVolumen()*10*user_sl,"\nSpread: ",_spread, "\nDST: ",DST));Comment(StringConcatenate("\n",progName," is running.\nNext order lots: ",CalcularVolumen(),
"\nTake profit ($): ",CalcularVolumen()*10*user_tp,
"\nStop loss ($): ",CalcularVolumen()*10*user_sl,
"\nSpread: ",_spread,
"\nDST: ",DST,
"\nMax Orders: ",maxOrders,
// "\nDailyFilter ",DailyFilter,"\nNewsFilter: ",NewsFilter,
"\nMins Before News: ",mBefore,
"\nMins After News: ",mAfter));
}
// Actualizamos el estado actual
InitBuy();
InitSell();
UpdateVars();
encontrada=FALSE;
point = Point;
Robot();
return(0);
}
void InitBuy()
{
// Reset number of buy/sell orders
buys=0;
// Reset arraysfor(int i=0; i<arrLgt; i++)
{
buy_tickets[i] = 0;
buy_lots[i] = 0;
buy_profit[i] = 0;
buy_price[i] = 0;
buy_sl[i]=0;
buy_tp[i]=0;
buy_magic[i]=0;
}
}
void InitSell()
{
// Reset number of buy/sell orders
sells=0;
// Reset arraysfor(int i=0; i<arrLgt; i++)
{
sell_tickets[i] = 0;
sell_lots[i] = 0;
sell_profit[i] = 0;
sell_price[i] = 0;
sell_sl[i]=0;
sell_tp[i]=0;
sell_magic[i]=0;
}
}
void UpdateVars()
{
int aux_buys=0, aux_sells=0;
double aux_total_buy_profit=0, aux_total_sell_profit=0;
double aux_total_buy_lots=0, aux_total_sell_lots=0;
buy_time=0;
sell_time=0;
datetime oTime;
// We are going to introduce data from opened orders in arrays for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
if(OrderSymbol() == Symbol() && (OrderMagicNumber() == newMagic1 ||OrderMagicNumber() == newMagic2) )
{
if( OrderType() == OP_BUY)
{
buy_tickets[aux_buys] = OrderTicket();
buy_lots[aux_buys] = OrderLots();
buy_profit[aux_buys] = OrderProfit()+OrderCommission()+OrderSwap();
buy_price[aux_buys] = OrderOpenPrice();
buy_sl[aux_buys] = OrderStopLoss();
buy_tp[aux_buys] = OrderTakeProfit();
aux_total_buy_profit = aux_total_buy_profit + buy_profit[aux_buys];
aux_total_buy_lots = aux_total_buy_lots + OrderLots();
oTime =OrderOpenTime();
buy_magic[aux_buys]=OrderMagicNumber();
if(oTime > buy_time)
buy_time = oTime;
aux_buys++;
}
elseif( OrderType() == OP_SELL)
{
sell_tickets[aux_sells] = OrderTicket();
sell_lots[aux_sells] = OrderLots();
sell_profit[aux_sells] = OrderProfit()+OrderCommission()+OrderSwap();
sell_price[aux_sells] = OrderOpenPrice();
sell_sl[aux_sells] = OrderStopLoss();
sell_tp[aux_sells] = OrderTakeProfit();
aux_total_sell_profit = aux_total_sell_profit + sell_profit[aux_sells];
aux_total_sell_lots = aux_total_sell_lots + OrderLots();
oTime =OrderOpenTime();
sell_magic[aux_sells]=OrderMagicNumber();
if(oTime > sell_time)
sell_time = oTime;
aux_sells++;
}
}
}
// Update global vars
buys = aux_buys;
sells = aux_sells;
total_buy_profit = aux_total_buy_profit;
total_sell_profit = aux_total_sell_profit;
total_buy_lots = aux_total_buy_lots;
total_sell_lots = aux_total_sell_lots;
}
Je suis nouveau sur ce site, et je peux voir votre bon travail, continuez comme ça mon frère. Cependant, j'aimerais que vous puissiez m'aider à coder un indicateur pour en faire un EA.
Tout ce dont j'ai besoin est que l'EA achète ou vende lorsque le signal apparaît.
L'idée est d'aller sur un timeframe plus élevé, 4hrs tf et trouver la tendance du marché (juste pour connaître la tendance) et trader sur un tf plus bas (15-5mins). Donc si c'est court, nous ne le faisons que jusqu'au changement de tendance de l'image temporelle supérieure.
mladen: Veuillez joindre le fichier mq4 - de cette façon, les utilisateurs ne peuvent pas le tester facilement et ne peuvent pas vous aider.
Uploaded , s'il vous plaît quelqu'un peut-il regarder dans ce code pour savoir pourquoi il ne peut pas back test, les résultats peuvent ne pas être rentables mais je serai reconnaissant.
MECMAN: Uploaded , s'il vous plaît quelqu'un peut regarder dans ce code pour savoir pourquoi il ne peut pas back test, les résultats peuvent ne pas être rentable, mais je serai reconnaissant.
Cela fonctionne (tant que vous avez l'indicateur "vertex_mod_3.01" dans le dossier indicateurs).
Ray
Essayez-le maintenant
Mladen
Toujours pas de changement. Peut-on réessayer ?
C'est tout ce que j'ai fait pour le 2MA ;
double fastMA = iMA(NULL,0,FastMa,FastMaShift,FastMaMethod,FastMaPrice,i) ;
double slowMA = iMA(NULL,0,SlowMa,SlowMaShift,SlowMaMethod,SlowMaPrice,i) ;
UpH[i] = EMPTY_VALUE;
DnH[i] = EMPTY_VALUE ;
trend[i] = trend[i+1] ;
double diffu = (fastMA - slowMA) ;
double diffd = (slowMA - fastMA) ;
si (diffu > diff_Level ) trend[i] = 1 ;
si (diffd > diff_Level ) trend[i] = -1 ;
Merci
Rayon
Mladen
Toujours pas de changement. Peut-on réessayer ?
C'est tout ce que j'ai fait pour le 2MA ;
double fastMA = iMA(NULL,0,FastMa,FastMaShift,FastMaMethod,FastMaPrice,i) ;
double slowMA = iMA(NULL,0,SlowMa,SlowMaShift,SlowMaMethod,SlowMaPrice,i) ;
UpH[i] = EMPTY_VALUE ;
DnH[i] = EMPTY_VALUE ;
trend[i] = trend[i+1] ;
double diffu = (fastMA - slowMA) ;
double diffd = (slowMA - fastMA) ;
si (diffu > diff_Level ) trend[i] = 1 ;
si (diffd > diff_Level ) trend[i] = -1 ;
Merci
Rayon
Voici ce que j'obtiens lorsque j'essaie le mode multi time frame (l'indicateur du post ci-dessus)
D' après ce que je vois, tout fonctionne comme il est supposé le faire.
C'est ce que j'obtiens lorsque j'essaie le mode multi time frame (l'indicateur du post ci-dessus).
Mladen
Je m'excuse de ne pas avoir présenté mon problème avec clarté. Vous avez raison sur le diff_Levelms 0.0 qui fonctionne correctement, mais l'ajout de diff_Levelms était de permettre des changements mineurs tels que l'étendue à rejeter comme .0002 pour EURUSD ou .02 pour USDJPY. Apparemment, mon calcul de diff n'est pas utilisé par le calcul de trend1.
double diffums = (ma2[i]-ma3[i]) ; //med-slow Apparemment mon calcul
double diffdms = (ma3[i]-ma2[i]) ;//slow - med Appare mment mon calcul
si (ma1[i]>ma2[i]) trendfm[i] =1;
si (ma1[i]<ma2[i]) trendfm[i] =-1;
si (ma1[i]>ma3[i]) trendfs[i] =1;
si (ma1[i]<ma3[i]) trendfs[i] =-1;
si (ma2[i]>ma3[i] && diffums > diff_Levelms) trendms[i] =1; n'est pas utilisé par le calcul de trend1
si (ma2[i]<ma3[i] && diffdms > diff_Levelms) trendms[i] =-1; non utilisé par le calcul de la tendance 1
Merci pour votre aide.
Ray
L'indicateur ne se met pas à jour
J'ai téléchargé l'indicateur "Outsidebar Trendline V2" ci-joint mais pour une raison quelconque, il ne se met pas à jour sur la prochaine barre/candle.
la barre/candle suivante. Lorsque l'on change de cadre temporel, il fonctionne bien, mais sur la barre suivante, dans ce cadre temporel, il ne fonctionne plus.
Un expert pourrait-il m'aider à faire en sorte que l'indicateur se rafraîchisse également sur les barres suivantes ?
Merci beaucoup.
Lea
mladen,
Mon ami a écrit cet EA basé sur l'indicateur vertex, nous n'avons pas été en mesure d'exécuter un backtest après qu'il l'ait créé. S'il vous plaît pouvez-vous m'aider à corriger l'erreur qui l'empêche d'être en mesure de backrest. mais il nécessite beaucoup de mise à jour une fois qu'il est nettoyé
Merci et apprciez humblement
Et c'est la suite
Et voici la suite
HEY MLADEN
Je suis nouveau sur ce site, et je peux voir votre bon travail, continuez comme ça mon frère. Cependant, j'aimerais que vous puissiez m'aider à coder un indicateur pour en faire un EA.
Tout ce dont j'ai besoin est que l'EA achète ou vende lorsque le signal apparaît.
L'idée est d'aller sur un timeframe plus élevé, 4hrs tf et trouver la tendance du marché (juste pour connaître la tendance) et trader sur un tf plus bas (15-5mins). Donc si c'est court, nous ne le faisons que jusqu'au changement de tendance de l'image temporelle supérieure.
Merci d'avance.
Veuillez joindre le fichier mq4 - de cette façon, les utilisateurs ne peuvent pas le tester facilement et ne peuvent pas vous aider.
Uploaded , s'il vous plaît quelqu'un peut regarder dans ce code pour savoir pourquoi il ne peut pas back test, les résultats peuvent ne pas être rentable, mais je serai reconnaissant.
Cela fonctionne (tant que vous avez l'indicateur "vertex_mod_3.01" dans le dossier indicateurs).