Freie EAs schreiben - Seite 10

 
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

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.

 
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_window

extern int    NumberOfDays = 50;
extern string AsiaBegin    = "10:00";
extern string AsiaEnd      = "18:00";
extern color  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(
   const string          name="Rectangle",  // имя прямоугольника
   const color           clr=clrRed,        // цвет прямоугольника
   const long            chart_ID=0,        // ID графика
   const int             sub_window=0,      // номер подокна
   datetime              time1=0,           // время первой точки
   double                price1=0,          // цена первой точки
   datetime              time2=0,           // время второй точки
   double                price2=0,          // цена второй точки
   const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линий прямоугольника
   const int             width=2,           // толщина линий прямоугольника
   const bool            fill=false,        // заливка прямоугольника цветом
   const bool            back=false,        // на заднем плане
   const bool            selection=false,    // выделить для перемещений
   const bool            hidden=true,       // скрыт в списке объектов
   const long            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.

extern int    TakeProfit     = 100.0;
extern bool   AllPositions   = True; // Управлять всеми позициями
extern bool   ProfitTrailing = True;  // Тралить только профит
extern int    TrailingStop   = 50;    // Фиксированный размер трала
extern int    TrailingStep   = 0;     // Шаг трала
extern bool   UseSound       = False;  // Использовать звуковой сигнал
extern string 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);
}
 
Фиксированно-пропорциональный метод выбора размера позиции (Р. Джонс)
Фиксированно-пропорциональный метод выбора размера позиции (Р. Джонс)
  • 2011.07.24
  • www.mql5.com
Когда-то давно читал книгу Р. Джонса, посвященную различным стратегиям управления капиталом (Биржевая игра. Сделай миллионы, играя числами...
 
 Iurii Tokman:


Danke für den Indikator, ich empfehle die Dienste von Iurii Tokman jedem:
 
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)
Ich danke Ihnen im Voraus.

 

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

Напишу советник бесплатно
Напишу советник бесплатно
  • 2021.05.08
  • www.mql5.com
если у вас есть хороая стратегия, и вы готовы ей поделиться,могу написать советника. приглашаю обсудить публично...
 
Leute, die einen einfachen EA schreiben können?
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.
Grund der Beschwerde: