Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 72

 
Vitalie Postolache:


Ich werde dasselbe sagen. Sie sind nicht gut in Logik. Was ist das Problem, um sofort zu berechnen, die erste Partie, auf der Grundlage der verfügbaren Mittel und den Wert des Risikos (ich glaube, es war etwa 3% geschrieben)? Warum müssen Sie alles an einem Ort erledigen?

Man nehme den Wert der freien Marge, multipliziere mit dem Risiko, teile durch 100 und den Wert der Marge für 1 Lot - das ist die einfachste Formel, um das Lot mit einem bestimmten Prozentsatz der freien Marge zu berechnen. Außerdem müssen Sie den Schritt des Loswechsels berücksichtigen und verhindern, dass die von der Maklergesellschaft zugelassene minimale/maximale Losgröße überschritten wird:


Ich habe Ihnen gesagt, dass der EA in einem kleinen Zeitintervall handelt, in dem die Wahrscheinlichkeit besteht, dass 9 aufeinanderfolgende entgegengesetzte Aufträge, die sich überschneiden, geöffnet werden, und jeder nächste Auftrag wird mit 2 multipliziert, so dass die Marge möglicherweise nicht ausreicht und der letzte ausstehende Auftrag möglicherweise nicht geöffnet wird. Ich habe herausgefunden, dass die beste Anzahl von Aufträgen im 5-10-Minuten-Intervall 9 ist. Im Allgemeinen muss ich eine Marge berechnen, falls alle Aufträge geöffnet werden, und auf der Grundlage dieser Daten in umgekehrter Reihenfolge das erste Los berechnen.

 
if(OrdersTotal() >= OrderCount)
{
Rückkehr;
}
//----
if(r > 50 && p > m) //Kaufauftrag öffnen
{
ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,",111,0,Green); //Kaufauftrag eröffnen
}
//-----
if(r < 50 && p < m) //Bedingungen für offene Verkaufsaufträge
{
ticketS = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,",111,0,Blue);
}
//----- Abschlussaufträge
for (int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
{
if(r < 50 && p < m)
{
OrderClose(ticketB,0.1,Bid,5,Red);
}
}

}

Ich glaube, ich habe es aus einem Beispiel übernommen. Könnten Sie mir bitte sagen, wie ich es richtig schreiben muss, damit die Bestellung abgeschlossen werden kann?

Ich zerbreche mir den Kopf über die umgekehrten Kaufbedingungen.

 
funnyrain8:
if(OrdersTotal() >= OrderCount)
{
Rückkehr;
}
//----
if(r > 50 && p > m) //Kaufauftrag öffnen
{
ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,",111,0,Green); //Kaufauftrag eröffnen
}
//-----
if(r < 50 && p < m) //Bedingungen für offene Verkaufsaufträge
{
ticketS = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,",111,0,Blue);
}
//----- Abschlussaufträge
for (int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
{
if(r < 50 && p < m)
{
OrderClose(ticketB,0.1,Bid,5,Red);
}
}

}

Ich glaube, ich habe es aus einem Beispiel übernommen. Könnten Sie mir bitte sagen, wie ich es richtig schreiben muss, damit die Bestellung abgeschlossen werden kann?

Ich zerbreche mir den Kopf über die umgekehrten Kaufbedingungen.


 if(OrdersTotal()>=OrderCount)  //Обрати внимание на эту конструкцию
     {                            //
      return;
     }
//---- 
   if(r>50 && p>m) //условия открытия ордера на покупку
     {
      for(int i=1; i<=OrdersTotal(); i++)
        {
         if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
           {
            if(OrderType()==OP_SELL)
              {
               OrderClose(OrderTicket(),0.1,Ask,5,Red);
              }
           }
        }
      ticketB=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Green); //открыnие ордера на покупку     

     }

//-----     
   if(r<50 && p<m) //условия открытия ордера на продажу
     {
     for(int i=1; i<=OrdersTotal(); i++)
        {
         if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
           {
            if(OrderType()==OP_BUY)
              {
               OrderClose(OrderTicket(),0.1,Bid,5,Red);
              }
           }
        }
      ticketS=OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",111,0,Blue);
     }

Wie diese
 
funnyrain8:
if(OrdersTotal() >= OrderCount)
{
Rückkehr;
}
//----
if(r > 50 && p > m) //Kaufauftrag öffnen
{
ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,",111,0,Green); //Kaufauftrag eröffnen
}
//-----
if(r < 50 && p < m) //Bedingungen für offene Verkaufsaufträge
{
ticketS = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,",111,0,Blue);
}
//----- Abschlussaufträge
for (int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
{
if(r < 50 && p < m)
{
OrderClose(ticketB,0.1,Bid,5,Red);
}
}

}

Ich glaube, ich habe es aus einem Beispiel übernommen. Könnten Sie mir bitte sagen, wie ich es richtig schreiben muss, damit die Bestellung abgeschlossen werden kann?

Ich zerbreche mir den Kopf über die umgekehrten Kaufbedingungen.


Wenn der Auftrag auf dem Ticket ausgewählt ist, brauchen Sie keine Aktion in der Schleife. Wenn Sieden Code korrigieren möchten, verwenden Sie die Schaltfläche SRC, umden Code in die Nachrichteinzufügen.
 
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict    
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int ticketB,ticketS;
void OnTick()
//------------------------------------------------------------------------------------------------
{
double p = iClose("EURUSD",PERIOD_M15,0);                                    //показание текущей цены 
double r = iRSI  ("EURUSD",PERIOD_M15,21,PRICE_CLOSE,0);                     //значение индюка RSI
double m = iMA   ("EURUSD",PERIOD_M15,89,0,MODE_EMA,PRICE_CLOSE,0);          //значение индюка МА
int    OrderCount  = 1;

//---------------ПОДСЧЕТ ОРДЕРОВ------------------------------------------------------------------
if(OrdersTotal() >= OrderCount)
          {
             return;
          }   
//-------------ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ--------------------------------------------------------------------
/*if(r > 50 && p > m)                                                        //условия открытия ордера на покупку
    {   
        ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Green);         
    }
//------------ЗАКРЫТИЕ ОРДЕРА НА ПРОДАЖУ--------------------------------------------------------
if(r<50 && p<m)                                                           
     {
      for(int i=1; i<=OrdersTotal(); i++)
        {
         if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
           {
            if(OrderType()==OP_BUY)
              {
                  ticketB = OrderClose(OrderTicket(),0.1,Bid,5,Red);
              }
           }
        }
     }*/
//------------------ОТКРЫТИЕ ОРДЕРА НА ПРОДАЖУ---------------------------------------------------------
if(r < 50 && p < m)                                                        //условия открытия ордера на продажу
    {
        ticketS = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",111,0,Blue); 
    } 
//---------------------ЗАКРЫТИЕ ОРДЕРА НА ПРОДАЖУ---------------------------------------------------------
if(r>50 && p>m) 
     {
   for(int i=1; i<=OrdersTotal(); i++)
        {
         if(OrderSelect(ticketS,SELECT_BY_TICKET)==true)
           {
            if(OrderType()==OP_SELL)
              {
                  ticketS = OrderClose(OrderTicket(),0.1,Ask,5,Red);
              }
           }
        }
     }
}
//+------------------------------------------------------------------+
Vielen Dank für die SRC), das ist, was es aussieht, ts sieht so aus, verkaufen sollte passieren, wenn Kerze geschlossen unter dem wop und rsi ist unter 50, und schließen Sie die Reihenfolge auf entgegengesetzte Bedingungen, und zur gleichen Zeit nach dem Schließen kaufen sollte passieren und nach dem Schließen, dann eine Bestellung und nicht mehr und so weiter zyklisch ... aber jetzt habe ich eine Bestellung offen und das ist es, und Haltestellen sind nicht funktioniert ...
 
funnyrain8:
Vielen Dank für die SRC), das ist, was es aussieht, ts sieht so aus, verkaufen sollte passieren, wenn Kerze geschlossen unter dem Handgelenk und rsi unter 50, und schließen Sie den Auftrag an den entgegengesetzten Bedingungen, und zur gleichen Zeit nach dem Schließen sollte passieren, kaufen und nach dem Schließen, dann eine Bestellung und nicht mehr und so weiter zyklisch ... aber jetzt öffne ich eine Bestellung und alle, und hält nicht funktionieren ...


Ich habe es in meinem eigenen Stil umgeschrieben, ich hoffe, Sie verstehen es, wenn etwas unklar ist, zögern Sie nicht zu fragen

//+------------------------------------------------------------------+
//|                                                   funnyrain8.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link      "https://www.mql5.com/ru/users/sergey1294"
#property version   "1.00"
#property strict

input int             MagicNumber  = 20110315;       // Номер копии
input string          CommentOrder = "Origenal";     // Комментарий к ордеру
input int             Slippage=100;             // Проскальзование (Пипс)
input double          Lot=0.01;           // Объем лота 
input int             SignalBar=0; // Сигнальный бар 

sinput string            s1=NULL; // Setting indicator slow МА
input int                ma_period=89;    // Period
input ENUM_MA_METHOD     ma_method=MODE_EMA;//Method calculation
input ENUM_APPLIED_PRICE ma_price=PRICE_CLOSE;//Price calculation

sinput string            s2=NULL; // Setting indicator RSI
input int                rsi_period=21; // Period
input ENUM_APPLIED_PRICE rsi_price=PRICE_CLOSE;//Price calculation
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(TotalOrder()==0)OrderOpen(GetSignal());
   else OrderClose(GetSignal());
  }
//+------------------------------------------------------------------+
int GetSignal()
  {
   double rsi = iRSI(_Symbol,PERIOD_CURRENT,rsi_period,rsi_price,SignalBar);                     //значение индюка RSI
   double ma = iMA   (_Symbol,PERIOD_CURRENT,ma_period,0,ma_method,ma_price,SignalBar);          //значение индюка МА

   if(Close[SignalBar]>ma && rsi>50.0)return(OP_BUY);
   if(Close[SignalBar]<ma && rsi<50.0)return(OP_SELL);
   return(WRONG_VALUE);
  }
//+------------------------------------------------------------------+
int TotalOrder()
  {
   int value=0;
   int total=OrdersTotal();
   for(int i=total-1; i>=0; i--)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderSymbol()!=_Symbol)continue;
      if(OrderMagicNumber()!=MagicNumber)continue;
      if(OrderType()>1)continue;
      value++;
     }
   return(value);
  }
//+------------------------------------------------------------------+
void OrderOpen(int type)
  {
   if(type==WRONG_VALUE)return;
   double price_open=(type==OP_BUY)?NormalizeDouble(Ask,_Digits):NormalizeDouble(Bid,_Digits);
   int ticket=OrderSend(_Symbol,type,Lot,price_open,Slippage,0,0,CommentOrder,MagicNumber);
   if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError());
  }
//+------------------------------------------------------------------+
void OrderClose(int type)
  {
   if(type==WRONG_VALUE)return;
   int total=OrdersTotal();
   for(int i=total-1; i>=0; i--)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=MagicNumber)continue;
      if(OrderSymbol()!=_Symbol)continue;
      if(OrderType()!=type)continue;
      double price_close=(type==OP_BUY)?NormalizeDouble(Bid,_Digits):NormalizeDouble(Ask,_Digits);
      bool res=OrderClose(OrderTicket(),OrderLots(),price_close,Slippage);
      if(!res)Print("Ошибка закрытия ордера № - ",GetLastError());
     }
  }
//+------------------------------------------------------------------+

...

 
Sergey Gritsay:


umgeschrieben in meinem eigenen Stil, ich hoffe Sie verstehen, wenn Sie etwas nicht verstehen, fragen Sie

...


Oh, ich dachte, ich hätte fast alles geschrieben, außer dem Schluss, und ich muss noch viel lernen... vielen Dank, jetzt habe ich wenigstens ein Beispiel, mit dem ich weitermachen kann... Dose, nochmals danke)
 
Hallo. Ich habe die Software Metatrader 5 heruntergeladen. Ich habe mich für 2 Signale angemeldet. Mein Kontostand ist positiv 20$. Ich versuche, virtuelles Hosting zu installieren, aber nichts funktioniert. Ich drücke auf Navigator, verbinden Sie mit dem Handelskonto, ich habe nicht einmal eine solche Registerkarte in der Tabelle virtuellen Hosting. Ich sende Ihnen Bildschirmfotos. Wie verbinde ich mich mit dem Shared Hosting?
Dateien:
3p46y0.jpg  273 kb
g4ppe22.jpg  264 kb
 
Жанна Платонова:
Hallo. Ich habe die Software Metatrader 5 heruntergeladen. Ich habe mich für 2 Signale angemeldet. Mein Kontostand ist positiv 20$. Ich versuche, virtuelles Hosting zu installieren, aber nichts funktioniert. Ich drücke auf Navigator, verbinden Sie mit dem Handelskonto, ich habe nicht einmal eine solche Registerkarte in der Tabelle virtuellen Hosting. Ich sende Ihnen Bildschirmfotos. Wie verbinde ich mich mit dem Shared Hosting?

Klicken Sie im Hauptmenü auf Hilfe.
 
Hallo. Ich habe eine Frage - auf dem Mac (Sierra) in allen ausgelieferten (durch Wein) von verschiedenen Unternehmen Plattformen mt4 die gleiche Panne - das Terminal, wenn Sie es von seinem normalen Platz am unteren Rand freizugeben, um es als freies Fenster zu bewegen - es schrumpft und Arbeit durch sie ist völlig unmöglich. Das Deaktivieren der automatischen Sortierung funktioniert nicht. Die Rückgabe des Terminals an der ehemaligen Stelle absolut unmöglich - d.h. es lässt sich einfach nicht mehr anbringen und öffnen. Ich habe eine Frage: Kennt jemand eine Tastenkombination oder eine Schaltfläche, mit der die gesamte Benutzeroberfläche an ihren ursprünglichen Platz zurückgebracht werden kann? Mit freundlichen Grüßen.