Konstantin Bystrov: Hallo zusammen. wer kann einen Indikator in mt4 schreiben, so dass die aktiven Handelssitzungen (kann von 10-18 eingestellt werden) in Form von japanischen Kerzen angezeigt wurden
Gibt es hier Handwerker, die einen EA schreiben könnten, der auf einem informativen Indikator für die Währungsstärke basiert. Der Algorithmus sieht wie folgt aus. Wir warten auf das Erscheinen der starken und schwachen Währung. Im Beispiel auf dem Screenshot sind es EUR und USD. Wenn die Differenz signifikant ist (in den EA-Parametern einzustellen), dann eröffnen wir eine Position. In dem Beispiel auf dem Screenshot müssen Sie einen Verkauf tätigen, was ich am Montag tun werde. Im EA müssen wir den Zeitrahmenparameter festlegen, von dem der EA das Signal nehmen soll (Unterschied in der Stärke der verschiedenen Währungen). Der Unterschied in der Währungsstärke ist das Signal. Ein Stop Loss ist nicht erforderlich. Take Profit wird benötigt. Wenn der Preis gegen uns geht, dann machen wir einen Durchschnitt. Legen Sie in Ihrem Expert Advisor den Mittelungsschritt, die Anzahl der Orders, die magische Zahl, die anfängliche Losgröße und den Loserhöhungsfaktor fest. Ich habe in letzter Zeit mit dieser Methode gehandelt und bin sehr zufrieden. Für meine Wahrnehmung ist es ein Gral.
Konstantin Bystrov: Hallo alle. können Sie einen Indikator in mt4 schreiben, um aktive Handelssitzungen (Sie können die Zeit von 10-18 einstellen) in Form von japanischen Kerzen anzuzeigen
//+------------------------------------------------------------------+//+------------------------------------------------------------------+#property copyright""#property link""#property indicator_chart_windowexternint NumberOfDays = 50;
externstring AsiaBegin = "10:00";
externstring AsiaEnd = "18:00";
externcolor AsiaColor = Goldenrod;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+void init()
{
DeleteObjects();
for(int i=0; i<NumberOfDays; i++)
CreateObjects("AS"+i, AsiaColor);
Comment("");
}
//+------------------------------------------------------------------+//| Custor indicator deinitialization function |//+------------------------------------------------------------------+void deinit()
{
DeleteObjects();
Comment("");
}
//+------------------------------------------------------------------+bool CreateObjects(
conststring name="Rectangle", // имя прямоугольникаconstcolor clr=clrRed, // цвет прямоугольникаconstlong chart_ID=0, // ID графикаconstint sub_window=0, // номер подокнаdatetime time1=0, // время первой точкиdouble price1=0, // цена первой точкиdatetime time2=0, // время второй точкиdouble price2=0, // цена второй точкиconstENUM_LINE_STYLE style=STYLE_SOLID, // стиль линий прямоугольникаconstint width=2, // толщина линий прямоугольникаconstbool fill=false, // заливка прямоугольника цветомconstbool back=false, // на заднем планеconstbool selection=false, // выделить для перемещенийconstbool hidden=true, // скрыт в списке объектовconstlong z_order=0) // приоритет на нажатие мышью
{
//--- сбросим значение ошибкиResetLastError();
//--- создадим прямоугольник по заданным координатамif(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": не удалось создать прямоугольник! Код ошибки = ",GetLastError());
return(false);
}
//--- установим цвет прямоугольникаObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линий прямоугольникаObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину линий прямоугольникаObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- включим (true) или отключим (false) режим заливки прямоугольникаObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);
//--- отобразим на переднем (false) или заднем (true) планеObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим выделения прямоугольника для перемещений//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection//--- по умолчанию равен true, что позволяет выделять и перемещать этот объектObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектовObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графикеObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнениеreturn(true);
}
//+------------------------------------------------------------------+void DeleteObjects()
{
for(int i=0; i<NumberOfDays; i++)
ObjectDelete("AS"+i);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+void start()
{
datetime dt=CurTime();
for(int i=0; i<NumberOfDays; i++)
{
DrawObjects(dt, "AS"+i, AsiaBegin, AsiaEnd);
dt=decDateTradeDay(dt);
while(TimeDayOfWeek(dt)>5)
dt=decDateTradeDay(dt);
}
}
//+------------------------------------------------------------------+void DrawObjects(datetime dt, string no, string tb, string te)
{
datetime t1, t2;
double p1, p2;
int b1, b2;
t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb);
t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te);
if(!TimeDayOfWeek(t1))
return;
b1=iBarShift(NULL, 0, t1);
b2=iBarShift(NULL, 0, t2);
p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)];
p2=Low [Lowest(NULL, 0, MODE_LOW, b1-b2, b2)];
ObjectSet(no, OBJPROP_TIME1, t1);
ObjectSet(no, OBJPROP_PRICE1, p1);
ObjectSet(no, OBJPROP_TIME2, t2);
ObjectSet(no, OBJPROP_PRICE2, p2);
}
//+------------------------------------------------------------------+datetime decDateTradeDay(datetime dt)
{
int ty=TimeYear(dt);
int tm=TimeMonth(dt);
int td=TimeDay(dt);
int th=TimeHour(dt);
int ti=TimeMinute(dt);
td--;
if(td==0)
{
tm--;
if(tm==0)
{
ty--;
tm=12;
}
if(tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12)
td=31;
if(tm==2)
if(MathMod(ty, 4)==0)
td=29;
else
td=28;
if(tm==4 || tm==6 || tm==9 || tm==11)
td=30;
}
return(StrToTime(ty+"."+tm+"."+td+" "+th+":"+ti));
}
//+------------------------------------------------------------------+
Hallo Liebe Programmiergurus, ich bitte um eure Hilfe bei der Fertigstellung dieses Roboters.
Ich bin selbst kein Programmierer, dieser Roboter wurde von mir selbst aus verschiedenen Teilen, die ich im Internet gefunden habe, zusammengebaut, aber ich kann die verbleibenden zwei Funktionen, die ich gerne sehen würde, nicht anbringen. Bitte helfen Sie mir. Ich denke, dass es für Sie nicht so schwierig sein wird wie für mich. Wenn Sie helfen möchten, erstellen Sie bitte eine Funktion, die einen schwebenden Auftrag schließt, nachdem einer der beiden schwebenden Aufträge ausgelöst wurde. Und die zweite Funktion sollte automatisch ein Lot der Bestellung erhöhen ("sagen wir" für jede $50 der Balance 0,01 Lot, wenn Sie $100 erreichen, wird der Roboter automatisch ein Lot um 0,02 erhöhen). Vielen Dank im Voraus für Ihre Hilfe.
externint TakeProfit = 100.0;
externbool AllPositions = True; // Управлять всеми позициямиexternbool ProfitTrailing = True; // Тралить только профитexternint TrailingStop = 50; // Фиксированный размер тралаexternint TrailingStep = 0; // Шаг тралаexternbool UseSound = False; // Использовать звуковой сигналexternstring NameFileSound = "expert.wav"; // Наименование звукового файлаvoid start()
{
double TakeProfitLevelB;
double TakeProfitLevelS;
double BuyStart = Ask + 400*_Point;
double SellStart = Bid - 400*_Point;
TakeProfitLevelB = BuyStart + TakeProfit*Point;
TakeProfitLevelS = SellStart - TakeProfit*Point;
if (Open[1]==Close[1]&& OrdersTotal()==0)
{
int BuyTicket = OrderSend(Symbol(),OP_BUYSTOP,0.10,BuyStart,3,0,TakeProfitLevelB,NULL,0,0,Green);
int SellTicket = OrderSend(Symbol(),OP_SELLSTOP,0.10,SellStart,3,0,TakeProfitLevelS,NULL,0,0,Blue);
}
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (AllPositions || OrderSymbol()==Symbol()) {
TrailingPositions();
}
}
}
}
void TrailingPositions()
{
double pBid, pAsk, pp;
pp = MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY) {
pBid = MarketInfo(OrderSymbol(), MODE_BID);
if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
ModifyStopLoss(pBid-TrailingStop*pp);
return;
}
}
}
if (OrderType()==OP_SELL) {
pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
ModifyStopLoss(pAsk+TrailingStop*pp);
return;
}
}
}
}
void ModifyStopLoss(double ldStopLoss)
{
bool fm;
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
Vielen Dank, lieber gss, für Ihr Interesse an meiner Anfrage. Aus diesem Grund habe ich mich an den MQL4-Guru gewandt. Der Code, den ich gepostet habe, funktioniert. Ich habe ihn mit Hilfe verschiedener Expert Advisors erstellt, genauer gesagt, habe ich nur die Trailing Stop-Funktion verwendet. Den Rest habe ich mir selbst ausgedacht (in Bezug auf ausstehende Aufträge). Ich möchte Sie und andere Gurus bitten, einen Blick auf meinen Code zu werfen und zwei weitere Funktionen zu diesem Roboter hinzuzufügen, wenn Sie nichts dagegen haben.
1) Löschen eines schwebenden Auftrags, wenn einer von ihnen ausgelöst wird.
2) Automatische Loserhöhung (für jede 50$ 0,01, d.h. für 100$ wird es 0,02 sein)
Wenn Sie sowohl Kauf- als auch Verkaufsaufträge erteilen, werden, sobald einer von ihnen geschlossen wird, dieselben Aufträge mit demselben Lot - Kauf und Verkauf - geöffnet usw.
D.h.wenn es eine Differenz in den Abrechnungen oder Buchten gibt, sollte es immer einen schwebenden Auftrag für eine Differenz von sagen wir 13 Pips geben.
d. h.wenn das Geschäft im Gewinn ist, d.h. die Order vorrückt --- d.h. im Falle einer umgekehrten Bewegung wird die Sperre positiv sein.
2. wenn ein Teil des Schlosses geöffnet wird, sollte ein Auftrag für die Differenz erteilt werden.
scheint alles zu sein. Noch einmal ---der Expert Advisor sollte sich nicht von selbst schließen, ohne zusätzliche Schaltflächen auf dem Chart.
Hallo zusammen. wer kann einen Indikator in mt4 schreiben, so dass die aktiven Handelssitzungen (kann von 10-18 eingestellt werden) in Form von japanischen Kerzen angezeigt wurden
ok
Guten Tag!
Gibt es hier Handwerker, die einen EA schreiben könnten, der auf einem informativen Indikator für die Währungsstärke basiert. Der Algorithmus sieht wie folgt aus. Wir warten auf das Erscheinen der starken und schwachen Währung. Im Beispiel auf dem Screenshot sind es EUR und USD. Wenn die Differenz signifikant ist (in den EA-Parametern einzustellen), dann eröffnen wir eine Position. In dem Beispiel auf dem Screenshot müssen Sie einen Verkauf tätigen, was ich am Montag tun werde. Im EA müssen wir den Zeitrahmenparameter festlegen, von dem der EA das Signal nehmen soll (Unterschied in der Stärke der verschiedenen Währungen). Der Unterschied in der Währungsstärke ist das Signal. Ein Stop Loss ist nicht erforderlich. Take Profit wird benötigt. Wenn der Preis gegen uns geht, dann machen wir einen Durchschnitt. Legen Sie in Ihrem Expert Advisor den Mittelungsschritt, die Anzahl der Orders, die magische Zahl, die anfängliche Losgröße und den Loserhöhungsfaktor fest. Ich habe in letzter Zeit mit dieser Methode gehandelt und bin sehr zufrieden. Für meine Wahrnehmung ist es ein Gral.
Hallo alle. können Sie einen Indikator in mt4 schreiben, um aktive Handelssitzungen (Sie können die Zeit von 10-18 einstellen) in Form von japanischen Kerzen anzuzeigen
Hallo Liebe Programmiergurus, ich bitte um eure Hilfe bei der Fertigstellung dieses Roboters.
Ich bin selbst kein Programmierer, dieser Roboter wurde von mir selbst aus verschiedenen Teilen, die ich im Internet gefunden habe, zusammengebaut, aber ich kann die verbleibenden zwei Funktionen, die ich gerne sehen würde, nicht anbringen. Bitte helfen Sie mir. Ich denke, dass es für Sie nicht so schwierig sein wird wie für mich. Wenn Sie helfen möchten, erstellen Sie bitte eine Funktion, die einen schwebenden Auftrag schließt, nachdem einer der beiden schwebenden Aufträge ausgelöst wurde. Und die zweite Funktion sollte automatisch ein Lot der Bestellung erhöhen ("sagen wir" für jede $50 der Balance 0,01 Lot, wenn Sie $100 erreichen, wird der Roboter automatisch ein Lot um 0,02 erhöhen). Vielen Dank im Voraus für Ihre Hilfe.
Sehen Sie sich e-News-Lucky$.mq4 an.
Blick auf Fixed-Proportional Position Size Selection Method (R. Jones) - MQL4 und MetaTrader 4 - MQL4 Algo-Traders Forum - Seite 3 (mql5.com)
Sehen Sie sich e-News-Lucky$.mq4 an.
Schauen Sie sich die Fixed-Proportional Position Size Selection Methode (R. Jones) - MQL4 und MetaTrader 4 - MQL4 Algo-Trader Forum - Seite 3 (mql5.com)
Hallo an alle, schaut euch meine Idee für einen Indikator an, um nicht alle Beiträge zu spammen, hier ist der Link
https://www.mql5.com/ru/forum/35071/page144#comment_22289427
d. h.wenn das Geschäft im Gewinn ist, d.h. die Order vorrückt --- d.h. im Falle einer umgekehrten Bewegung wird die Sperre positiv sein.
2. wenn ein Teil des Schlosses geöffnet wird, sollte ein Auftrag für die Differenz erteilt werden.
scheint alles zu sein. Noch einmal --- der Expert Advisor sollte sich nicht von selbst schließen, ohne zusätzliche Schaltflächen auf dem Chart.