Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 448

 
Forexman77:
Wie kann man es ungefähr umsetzen? Mit den anderen Funktionen bin ich vertraut, aber mit Aufträgen und Arrays habe ich noch nicht so recht etwas anfangen können.

Es ist in etwa so, denke ich

 // Учёт ордеров
   Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   int Ticket[5];
   ArrayInitialize(Ticket,0);
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symb)continue;      // Не наш фин. инструм
         if (OrderType()>1)                     // Попался отложенный
           {
            Alert("Обнаружен отложенный ордер. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Total++;                               // Счётчик рыночн. орд
         if (Total>5)                           // Было не более одного орд, стало не более пяти
           {
            Alert("Несколько рыночных ордеров. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Ticket[Total-1]=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
   // Открытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
      if (Total < 5 && Opn_B==true)     // Открытых орд. нет +. Было Total < 1, стало Total < 5
        {                                       // критерий откр. Buy
         RefreshRates();                        // Обновление данных
         SL=Bid - New_Stop(StopLoss)*Point;     // Вычисление SL откр.
         TP=Bid + New_Stop(TakeProfit)*Point;   // Вычисление TP откр.
         Alert("Попытка открыть Buy. Ожидание ответа..");
         Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
         if (Ticket > 0)                        // Получилось :)
           {
            Alert ("Открыт ордер Buy ",Ticket);
            return;                             // Выход из start()
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
   // Закрытие ордеров
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy и есть критерий закр
        {
          for(i=0;i<5;i++)                             
          {
            if (Ticket[i]==0) continue;           

            Alert("Попытка закрыть Buy ",Ticket[i],". Ожидание ответа..");
            RefreshRates();                        // Обновление данных
         
            Ans=OrderClose(Ticket[i],Lot,Bid,2);      // Закрытие Buy

            if (Ans==true)                         // Получилось :)
            {
               Alert ("Закрыт ордер Buy ",Ticket[i]);
            }

            if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            {
               i--;
               continue;                           // Повторная попытка
            }

         }
 
Vitek2010:
Nein, ich erkläre es Ihnen - Ihr Forum ist wie eine Hoffnung für die letzte kompetente Hochburg der Prog. und Einfügung von Größe - so sieht es die Schrift PERIOD_W1, aber weder die Verwendung von Größe noch die Verwendung von festen Daten in Form von Datumsangaben bringen den gewünschten Effekt. Ich habe eine spezielle Frage zum Freitag gepostet - übrigens lässt sich Ihr Code nicht kompilieren, weil er 'Version' sagt - unbekannte Eigenschaft, wenn Sie also nicht wissen, wie Sie DayOfWeek und 5 (die Zahl des Freitags) in den Code einfügen können,helfen andere Optionen nicht .


Sie sagen also das Falsche.

Dateien:
vitek2010.mq4  2 kb
 

Guten Tag zusammen. Ich poste einen Indikator, der sich leider aufhängt und keine Pfeile in der Zeit zeichnet, sondern nur, wenn man den Chart aktualisiert... Umschalten auf andere TFs.

Wenn jemand den Indikator dazu bringen kann, sich am Ende jeder Kerze zu aktualisieren..., sagen wir 5-10 Sekunden bevor die Kerze schließt? Oder gibt es vielleicht eine andere Möglichkeit, dieses Problem zu lösen?

Vielen Dank im Voraus.

Dateien:
 
Vinin:


Sie sagen also das Falsche.


Ich habe in den Indikator - was es zeigt - ist nicht klar. meine Variante hatte die Bedingung der Fortsetzung oder Änderung der vorherigen Bewegung . dh unter oder über der Nulllinie . und Sie haben alles über und auf allen Wochen ist es nicht so einfach . Sie sollten nicht von der Basis (meine) Variante abweichen und die Dinge zu vereinfachen . müssen Sie auf der Grundlage meiner Indikator zu tun. Mit freundlichen Grüßen.
 
alsu:

Ungefähr so, denke ich.


Verlegung der Linien
int Ticket[5];
ArrayInitialize(Ticket,0);

anstelle vonint Ticket; es treten Fehler auf:

'=' - linke eckige Klammer, erwartet für Array('=' - linke eckige Klammer, erwartet für Array)

'>' - linke eckige Klammer erwartet für Array ('=' - linke eckige Klammer erwartet für Array)

'>' - unerwartetes Token('>' - Unerwartetes Token)

')' - Zuweisung erwartet('' - Zuweisung erwartet )

'continue' - 'break' oder 'continue' wird nur innerhalb einiger Schleifen verwendet )

und vieles mehr.

 

Warum öffnet der Berater eine unendliche Anzahl von Aufträgen, helfen Sie mir, dies zu beheben

danke

extern double tp = 100;
extern double l = 0,1;




int start()
{
// 1.3600
if(OrderMagicNumber() ==1 >0){return;}
sonst
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
if(OrderMagicNumber() ==2 >0){return;}
sonst
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
Rückkehr;
}

 
addict:

Warum öffnet der Berater eine unendliche Anzahl von Aufträgen, helfen Sie mir, dies zu beheben

danke

extern double tp = 100;
extern double l = 0,1;




int start()

hinzufügen if(AufträgeSumme()==0)




// 1.3600
if(OrderMagicNumber() ==1 >0){return;}
sonst
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
if(OrderMagicNumber() ==2 >0){return;}
sonst
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
Rückkehr;
}

 
denis77515:

hinzufügen if(AufträgeSumme()==0)

ein Kaufauftrag wird von einem eröffnet, und für den Verkauf - wiederum eine unendliche Anzahl von Aufträgen
 

Guten Tag.

Ich verstehe nicht, wie das funktioniert

03:00:24 '9473965': Auftrag verkaufen 0.01 GBPUSD Eröffnung bei 0.00000 sl: 1.65314 tp: 0.00000 fehlgeschlagen [Ungültige S/L oder T/P]

mit diesem Code

RefreshRates();
tick=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),30,ssll,0,CMM,MAGIC,0,Blue);
     
warum der Eröffnungspreis gleich Null ist
 

Guten Tag.

Können Sie helfen, eine solche Funktion zu erstellen?

Wie viele Balken des aktuellen Diagramms von der letzten bekannten Serverzeit (TimeCurrent()) bis zu einem bestimmten Tag bis zum ersten Balkendieses Tages (TimeDay(Time[80]))?

Vielen Dank im Voraus!

Grund der Beschwerde: