[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 510

 

Guten Abend! Ich bin verblüfft. Ich habe zwei Aufträge im Testprogramm geöffnet, einen mit und einen ohne Gewinnmitnahme.

Beide nehmen den Gewinn auf einmal!!!!

Ich bin mit dem Tester achtmal an diesem Ort vorbeigefahren. Ich kann das nicht verstehen!

 
Dimka-novitsek:

Guten Abend! Ich bin verblüfft. Ich habe zwei Aufträge im Testprogramm geöffnet, einen mit und einen ohne Gewinnmitnahme.

Beide nehmen den Gewinn auf einmal!!!!

Ich bin mit dem Tester achtmal an diesem Ort vorbeigefahren. Ich kann es nicht verstehen!


Sieht aus wie ein Klon-Double! Probieren Sie es mit Demo! Erzählen Sie uns später davon!

Also schauen Sie, wo der SL ausgelöst, der Verlust, und wo der TP, der Gewinn. Das ist richtig!

Prüfen Sie, was im Protokoll steht? Verfolgen Sie also Schritt für Schritt alle Aktionen!

Nur im Testerpass verdoppelt! Auf der Demo, außerdem auf der Real wird 1, und die zweite wird nicht passieren, wird es eine Menge von Fehlern!

 
hoz:
Die Frage ist folgende. Wenn ich eine Limit Pending Order platzieren möchte, die genau bei der Eröffnung des Tagesbalkens, d.h. des Balkens auf TF D1, ausgelöst wird. Wie soll ich sie umsetzen? Ich verstehe die Logik nicht wirklich. Schließlich brauche ich keinen einfachen Begrenzer, sondern einen Begrenzer, der genau zu einem bestimmten Zeitpunkt wirkt, d.h. bei der Eröffnung eines neuen Tagesbars.
Klären Sie zunächst die Terminologie - "Limit, das genau zu einem bestimmten Zeitpunkt ausgelöst wird" - was bedeutet "Limit-Trigger"? Und je mehr Sie diesen magischen Prozess erklären, desto einfacher wird es sein, ihn in der Praxis umzusetzen. Lesen Sie vorsichtshalber etwas über Pending Orders.
 
Dimka-novitsek:

Guten Abend! Ich bin verblüfft. Ich habe zwei Aufträge im Testprogramm geöffnet, einen mit und einen ohne Gewinnmitnahme.

Beide nehmen den Gewinn auf einmal!!!!

Ich bin mit dem Tester achtmal an diesem Ort vorbeigefahren. Ich kann das nicht verstehen!

Vielleicht können Sie uns ein Geheimnis verraten: "Warum einen Klon eines offenen Auftrags erstellen? Können Sie nicht EINE Bestellung mit einer größeren Menge aufgeben? ;)
 
Es ist eine Strategie. Vielleicht mache ich jetzt einen Screenshot davon. Oh, mein älterer Bruder ist hier. Ich schaffe es nicht rechtzeitig. Es ist allerdings eine seltsame Situation.
 
Ist es korrekt, Datumsformate auf diese Weise zu vergleichen?
datetime t=OrderCloseTime();
             datetime t1=Time[1];
             datetime t0=Time[0];
             if(t1>=t&&t<t0){
               p++;
             }
 
Dimka-novitsek:
Dies ist eine Strategie. Ich könnte jetzt einen Screenshot davon machen. Oh, mein älterer Bruder ist hier. Ich schaffe es nicht rechtzeitig. Es ist eine merkwürdige Situation.

Werden Sie bei Diman eine PERSÖNLICHE KAMPAGNE verwenden können?)

Haben Sie in einem Jahr in der realen Welt Geld verdient? Das ist wie die START-Beträge, die Ihnen zugeteilt werden, nicht wahr?)

 
TarasBY:
Definieren Sie zunächst die Terminologie - "der Grenzwert, der genau zu einem bestimmten Zeitpunkt ausgelöst wird" - was bedeutet "der Grenzwert wird ausgelöst"? Und je detaillierter Sie diesen magischen Prozess beschreiben, desto leichter wird es sein, ihn im wirklichen Leben umzusetzen.


Ja, ich habe mich falsch ausgedrückt. Ich meine, im Grunde genommen. Wenn es hier klar ist, wird das Pendel nur auf den Preis gelegt.

Hier ist der Code:

//+------------------------------------------------------------------+
//|                                                       2 Days.mq4 |
//|                                                              hoz |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

extern string    A1 = "Объем сделки. Если i_lots = 0, то считается в процентах";
extern double    i_lots = 0.1;
extern string    A2 = "Управление рисками";
extern double    i_sl = 15,
                 i_tp = 10;
extern int  slippage,
            price_b,
            price_a;

extern string    Z1 = "=== Прочие настройки ===";
extern string    i_openOrderSound = "ok.wav";
extern int       i_magicNumber = 400021;

double firstBarClosed,
       secondBarClosed;
 
// Идентификаторы типов сигналов
#define SIGNAL_BUY              1                     // Сигнал на покупку
#define SIGNAL_SELL            -1                     // Сигнал на продажу
#define SIGNAL_NO               0                     // Нет сигнала

#include <stderror.mqh>

int init()
{
   
   return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}
//+------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------+
//| Получение рыночных данных                                                           |
//+-------------------------------------------------------------------------------------+
//FindOrders()
//+-------------------------------------------------------------------------------------+
//| Получение рыночных данных                                                           |
//+-------------------------------------------------------------------------------------+
void GetMarketInfo()
{
  price_b = MarketInfo(Symbol(),MODE_BID);
  price_a = MarketInfo(Symbol(),MODE_ASK);
}
//+-------------------------------------------------------------------------------------+
//| Открытие позиций                                                                    |
//+-------------------------------------------------------------------------------------+
bool Trade(int signal, double& priceForBuy, double& priceForSell)
{
 // FindOrders();
  priceForBuy = NormalizeDouble(priceForBuy,Digits);
  priceForSell = NormalizeDouble(priceForSell,Digits);
  
  if(!IsTesting())
     GetMarketInfo();
     
  if (signal == SIGNAL_BUY)
     if (!OrderSend(Symbol(),OP_BUYLIMIT, i_lots,priceForBuy,slippage,i_sl,i_tp,"",i_magicNumber,3))
     return(false);
     
  if (signal == SIGNAL_SELL)
     if (!OrderSend(Symbol(),OP_SELLLIMIT,i_lots,priceForSell,slippage,i_sl,i_tp,"",i_magicNumber,3))
     return(false);
     
  return(true);
}
//+-------------------------------------------------------------------------------------+
//| Получение цены входа в покупку или в продажу                                        |
//+-------------------------------------------------------------------------------------+
double GetPriceToInput()
{
  firstBarClosed = iClose(Symbol(),1440,2);
  secondBarClosed = iClose(Symbol(),1440,1);
    
  {
    double deltaForSell = (firstBarClosed - secondBarClosed)/2;
    double priceForSell = secondBarClosed - deltaForSell;
    
    return(priceForSell);
  }  

  {
    double deltaForBuy = (secondBarClosed - firstBarClosed)/2;
    double priceForBuy = secondBarClosed + deltaForBuy;  
    return(priceForBuy);
  }
}
//+-------------------------------------------------------------------------------------+
//| Генерация сигнала закрытия, покупки или продажи                                     |
//+-------------------------------------------------------------------------------------+
int GetSignal()
{
  if(firstBarClosed > secondBarClosed)
  return(SIGNAL_BUY);

  if(firstBarClosed < secondBarClosed)
  return(SIGNAL_NO);
}
//+-------------------------------------------------------------------------------------+
//| Функция Start                                                                       |
//+-------------------------------------------------------------------------------------+
int start()
{
  int signal = GetSignal();
    
    if (signal != SIGNAL_NO)
      if(!Trade(signal, priceForBuy, priceForSell))
      return(0);

  return(0);
}


Die Frage ist in der Tat nicht sehr kompliziert. Ich habe dieformalen Parameter priceForBuy und priceForSell an die Funktion Trade(int signal, double& priceForBuy, double& priceForSell) übergeben. Die Parameter werden über die Links übergeben. Wird das nicht so gemacht? Die Funktionen sind lokal, nicht global.

Während der Kompilierung ist ein Fehler aufgetreten:

'priceForBuy' - variable not defined    E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (117, 25)
'priceForSell' - variable not defined   E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (117, 38)

Woher kommt der Fehler? Ich habe diese Parameter bereits in der FunktionGetPriceToInput() definiert.

 
Wofür ist die Brezel & das After-Double (ich weiß es ehrlich gesagt nicht)?
 
YOUNGA:
und wofür ist die Brezel und das After-Double (ich weiß es ehrlich gesagt nicht)?

Es ist eine Besessenheit, Parameter per Referenz übergeben zu wollen. :-)