So sieht es aus, wenn ich den Multi-Time-Frame-Modus ausprobiere (der Indikator aus dem obigen Beitrag)
ACHTUNG: Video sollte neu hochgeladen werden
ATTENTION: Video sollte neu hochgeladen werden
Soweit ich sehe, funktioniert alles so, wie es funktionieren soll
Mladen
Ich entschuldige mich dafür, dass ich mein Problem nicht klar dargestellt habe. Sie haben recht, dass diff_Levelms 0.0 richtig funktioniert, aber die Hinzufügung von diff_Levelms sollte es ermöglichen, dass kleinere Änderungen wie z.B. die Schwankungsbreite von .0002 für EURUSD oder .02 für USDJPY nicht berücksichtigt werden. Offenbar wird meine diff-Berechnung nicht von der trend1-Berechnung verwendet.
wenn (ma1[i]>ma2[i]) trendfm[i] =1; wenn (ma1[i]<ma2[i]) trendfm[i] =-1; wenn (ma1[i]>ma3[i]) trendfs[i] =1; wenn (ma1[i]<ma3[i]) trendfs[i] =-1; if (ma2[i]>ma3[i] && diffums > diff_Levelms) trendms[i] =1; wird nicht von der trend1-Berechnung verwendet if (ma2[i]<ma3[i] && diffdms > diff_Levelms) trendms[i] =-1; wird nicht von der trend1-Berechnung verwendet
Mein Freund hat diesen EA auf der Grundlage des Vertex-Indikators geschrieben, wir waren nicht in der Lage, einen Backtest durchzuführen, nachdem er ihn erstellt hatte. Bitte können Sie mir helfen, beheben Sie den Fehler, der verhindert, dass es in der Lage, backrest. aber es erfordert eine Menge von Update, sobald es bereinigt ist
Vielen Dank und demütig apprciate
// ------------------------------------------------------------------------------------------------// ------------------------------------------------------------------------------------------------#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;
}
Ich bin neu auf dieser Website, und ich kann sehen, Ihre gute Arbeit, keep it up bro. Allerdings wünschte ich, Sie können mir helfen, mit einigen Codierung auf Drehen eines Indikators in einen EA.
Alles, was ich wirklich brauche, ist für die EA zu kaufen oder zu verkaufen, wenn Signal erscheint.
Idee ist es, zu einem höheren Zeitrahmen, 4hrs tf zu gehen und den Trend des Marktes zu finden (nur um den Trend zu kennen) und Handel auf niedrigeren tf (15-5mins). Also, wenn es kurz, wir nur kurz, bis die Änderung der Trend der höheren Zeitrahmen.
mladen: Bitte fügen Sie die mq4-Datei - auf diese Weise können Benutzer nicht testen es leicht und dann können sie nicht helfen Sie
Hochgeladen, bitte kann jemand in diesen Code schauen, um zu wissen, warum es nicht zurück testen kann, die Ergebnisse können nicht profitabel sein, aber ich werde dankbar sein
MECMAN: Hochgeladen, bitte kann jemand Blick in diesen Code zu wissen, warum es nicht zurück testen, die Ergebnisse können nicht profitabel sein, aber ich werde dankbar sein
Es funktioniert (solange Sie den Indikator "vertex_mod_3.01" im Indikatorenordner haben)
Ray
Probieren Sie es jetzt aus
Mladen
Immer noch keine Änderung. Können wir es noch einmal versuchen?
Das ist alles, was ich für die 2MA gemacht habe;
double fastMA = iMA(NULL,0,FastMa,FastMaShift,FastMaMethod,FastMaPrice,i);
double slowMA = iMA(NULL,0,SlowMa,SlowMaShift,SlowMaMethode,SlowMaPreis,i);
UpH[i] = EMPTY_VALUE;
DnH[i] = EMPTY_VALUE;
trend[i] = trend[i+1];
double diffu = (fastMA - slowMA);
double diffd = (slowMA - fastMA);
wenn (diffu > diff_Level ) trend[i] = 1;
wenn (diffd > diff_Level ) trend[i] = -1;
Danke
Strahl
Mladen
Immer noch keine Änderung. Können wir es noch einmal versuchen?
Das ist alles, was ich für die 2MA gemacht habe;
double fastMA = iMA(NULL,0,FastMa,FastMaShift,FastMaMethod,FastMaPrice,i);
double slowMA = iMA(NULL,0,SlowMa,SlowMaShift,SlowMaMethode,SlowMaPreis,i);
UpH[i] = EMPTY_VALUE;
DnH[i] = EMPTY_VALUE;
trend[i] = trend[i+1];
double diffu = (fastMA - slowMA);
double diffd = (slowMA - fastMA);
wenn (diffu > diff_Level ) trend[i] = 1;
wenn (diffd > diff_Level ) trend[i] = -1;
Danke
Strahl
Das erhalte ich, wenn ich den Multi-Zeitrahmen-Modus ausprobiere (der Indikator aus dem obigen Beitrag)
Soweit ich sehe, funktioniert alles so, wie es funktionieren soll
So sieht es aus, wenn ich den Multi-Time-Frame-Modus ausprobiere (der Indikator aus dem obigen Beitrag)
Mladen
Ich entschuldige mich dafür, dass ich mein Problem nicht klar dargestellt habe. Sie haben recht, dass diff_Levelms 0.0 richtig funktioniert, aber die Hinzufügung von diff_Levelms sollte es ermöglichen, dass kleinere Änderungen wie z.B. die Schwankungsbreite von .0002 für EURUSD oder .02 für USDJPY nicht berücksichtigt werden. Offenbar wird meine diff-Berechnung nicht von der trend1-Berechnung verwendet.
double diffums = (ma2[i]-ma3[i]); //med-slow Anscheinend meine Berechnung
double diffdms = (ma3[i]-ma2[i]);//slow - med Offensichtlich meine Berechnung
wenn (ma1[i]>ma2[i]) trendfm[i] =1;
wenn (ma1[i]<ma2[i]) trendfm[i] =-1;
wenn (ma1[i]>ma3[i]) trendfs[i] =1;
wenn (ma1[i]<ma3[i]) trendfs[i] =-1;
if (ma2[i]>ma3[i] && diffums > diff_Levelms) trendms[i] =1; wird nicht von der trend1-Berechnung verwendet
if (ma2[i]<ma3[i] && diffdms > diff_Levelms) trendms[i] =-1; wird nicht von der trend1-Berechnung verwendet
Vielen Dank an
ray
Indikator lässt sich nicht aktualisieren
Ich habe den beigefügten "Outsidebar Trendline V2"-Indikator heruntergeladen, aber aus irgendeinem Grund aktualisiert er sich nicht beim
nächsten Balken/Kerze. Beim Wechsel des Zeitrahmens funktioniert er gut, aber auf dem folgenden Balken in diesem Zeitrahmen nicht mehr.
Könnte ein Experte von Ihnen bitte helfen, damit sich der Indikator auch auf den nächsten Balken aktualisiert?
Vielen Dank!
Lea
mladen,
Mein Freund hat diesen EA auf der Grundlage des Vertex-Indikators geschrieben, wir waren nicht in der Lage, einen Backtest durchzuführen, nachdem er ihn erstellt hatte. Bitte können Sie mir helfen, beheben Sie den Fehler, der verhindert, dass es in der Lage, backrest. aber es erfordert eine Menge von Update, sobald es bereinigt ist
Vielen Dank und demütig apprciate
Und das ist die Fortsetzung
Und dies ist die Fortsetzung
HEY MLADEN
Ich bin neu auf dieser Website, und ich kann sehen, Ihre gute Arbeit, keep it up bro. Allerdings wünschte ich, Sie können mir helfen, mit einigen Codierung auf Drehen eines Indikators in einen EA.
Alles, was ich wirklich brauche, ist für die EA zu kaufen oder zu verkaufen, wenn Signal erscheint.
Idee ist es, zu einem höheren Zeitrahmen, 4hrs tf zu gehen und den Trend des Marktes zu finden (nur um den Trend zu kennen) und Handel auf niedrigeren tf (15-5mins). Also, wenn es kurz, wir nur kurz, bis die Änderung der Trend der höheren Zeitrahmen.
Vielen Dank im Voraus.
Bitte fügen Sie die mq4-Datei - auf diese Weise können Benutzer nicht testen es leicht und dann können sie nicht helfen Sie
Hochgeladen, bitte kann jemand Blick in diesen Code zu wissen, warum es nicht zurück testen, die Ergebnisse können nicht profitabel sein, aber ich werde dankbar sein
Es funktioniert (solange Sie den Indikator "vertex_mod_3.01" im Indikatorenordner haben)