[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 700

 
cyclik33:


Ich habe Ihnen gesagt, warum der Code nicht richtig funktioniert - Sie haben ihn an die falsche Stelle gesetzt... :) Ich glaube, wenn man die Räder abschraubt und in den Kofferraum legt, kommt man nicht weit, auch wenn die Räder da sind und die Türen schließen... :)
 
T-G:

Die Frage mag trivial sein, der Expert Advisor handelt auf M1, das Signal zum Eröffnen einer Order kam, nehmen wir an, der Stop ist short und die Order wurde auf dem Sl geschlossen, aber die Bedingung zum Eröffnen der Order besteht immer noch.

Wie lässt sich am besten sicherstellen, dass der Auftrag nicht in derselben Minute erneut geöffnet wird?

Überprüfen Sie die Öffnung einer neuen Kerze. Wenn es ein neues ist, öffnen Sie es, wenn es ein altes ist, lassen Sie es...
 
ToLik_SRGV:

Die Anzahl der Nummern in OrderSelect() beginnt bei Null. Und Sie haben 1, was bedeutet, dass Sie nach einer zweiten Bestellung suchen, obwohl Sie nur eine auf dem Markt haben, weshalb es nicht funktioniert.

Danke, das hatte ich vergessen.
 
ToLik_SRGV:

Boris, eine kleine Korrektur im Code, ich habe vergessen, das Zurücksetzen der Array-Position hinzuzufügen, wenn man zur ursprünglichen Partie zurückkehrt:


Ich bin mir nicht sicher, ob ich sie an der richtigen Stelle platziert habe. Nach einem Verlust kann er das ursprüngliche Los öffnen, und wenn auch dieses verliert, kann er das ursprüngliche Los wieder öffnen.

Und manchmal dauert es nach dem ersten Verlust 0,4.

Ich muss etwas an die falsche Stelle gesetzt haben?

 
cyclik33:


Ich habe eine sehr seltsame Art, mit diesem Code zu arbeiten. Nach einem Verlust kann er das erste Los öffnen, und wenn dieses erneut verliert, kann er das erste Los öffnen.
Und manchmal nach dem ersten Verlust nimmt 0,4.
Ich muss etwas an die falsche Stelle gesetzt haben?

Boris, eine kleine Korrektur im Code, ich habe vergessen, das Zurücksetzen der Array-Position hinzuzufügen, wenn man zum ursprünglichen Lot zurückkehrt:

//+------------------------------------------------------------------+
double getMartinLot(double lot, double arrayLot[]){//ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛА
   static double balance_before, balance_after;    //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОК
   static double save_Lot;   
   static int loop;
   if(loop == ArraySize(arrayLot))loop = 0;   
   balance_after = AccountBalance();               //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСА   
   if(balance_after >= balance_before){            //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
      save_Lot = lot;                              //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ ДО БАЗОВОГО
      loop = 0;
   }else{
      save_Lot = arrayLot[loop];                   //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ
      loop++;
   }
   balance_before = balance_after;                 //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫ
   return(save_Lot);
}
//+------------------------------------------------------------------+
 
artmedia70:
Ich habe Ihnen gesagt, warum es nicht richtig funktioniert - Sie haben es an der falschen Stelle angebracht... :) Ich glaube, wenn man die Räder abschraubt und in den Kofferraum legt, kommt man nicht weit, auch wenn es so aussieht, als ob die Räder da sind und die Türen schließen... :)


Ich stimme Ihnen absolut zu. Aber ich kritisiere nicht Ihren Code, ich habe nur gesagt, dass ich ein Problem damit hatte), übrigens, ich habe ein Problem mit ihm wieder, wenn es Ihnen nichts ausmacht - sagen Sie mir, was falsch ist, ich würde wirklich gerne verstehen, was ich falsch mache.

extern color colorOpenBuy = Blau;
extern colorCloseBuy = Aqua;
extern colorOpenSell = Rot;
extern colorCloseSell = Aqua;


void deinit() {
Comment(");
}

double Lots_New = Lot;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Die Zeit für den Handel ist noch nicht gekommen!");
return(0);

Ich habe es hier eingefügt, wie Sie gesagt haben, vor der Funktion Start, aber beim Kompilieren heißt es 'Lot' - Initialisierung erwartet D:\MetaTrader\experts\Prostoj_2.mq4 (39, 20)

Bitte sagen Sie mir, was das sein könnte.

 
artmedia70:
Überprüfen Sie die Öffnung einer neuen Kerze. Wenn neu, dann öffnen Sie, wenn alt, dann nicht...
Wie kann man das am besten machen?
 
cyclik33:


Ich stimme Ihnen absolut zu. Aber ich kritisiere Ihren Code nicht, ich sage nur, dass ich einige Probleme damit habe. Übrigens habe ich ein weiteres Problem damit, wenn es Ihnen nichts ausmacht - sagen Sie mir, was falsch ist, ich würde wirklich gerne wissen, was ich falsch mache.

extern color colorOpenBuy = Blau;
externe Farbe colorCloseBuy = Aqua;
extern colorOpenSell = Red;
externe Farbe colorCloseSell = Aqua;


void deinit() {
Kommentar(");
}

double Lots_New = Lot;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
wenn (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Die Zeit für den Handel ist noch nicht gekommen!");
zurück(0);

Ich habe es hier eingefügt, wie Sie gesagt haben, vor der Start-Funktion, aber beim Kompilieren sagt es 'Lot' - Initialisierung erwartet D:\MetaTrader\experts\Prostoj_2.mq4 (39, 20)

Bitte sagen Sie mir, was das sein könnte.

Wo wird Lot in Ihrem Code initialisiert?

extern color colorOpenBuy = Blue;
extern color colorCloseBuy = Aqua;
extern color colorOpenSell = Red;
extern color colorCloseSell = Aqua;
extern double Lot = 0.1;
double Lots_New;

void deinit() {
Comment("");
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);

Als Nächstes, erst nach der Überprüfung auf Elche, ändern Sie entweder Lots_New wie zuvor geschrieben, oder weisen Sie ihm den Wert = Lot zu;

 

Ja... Ich tue mich schwer mit Arrays... Beim Versuch, ein Array mit Induktionsdaten zu füllen, ist die kleine Funktion eine boo-o-o-o-o-o-little Pattsituation... Können Sie mir sagen, was ich falsch mache?

double      TempIND[50]; 
void   SaveDataIND(double TempIND[], int nBars)
{
   ArrayResize(TempIND,nBars);
   for (int j=0; j<=nBars-1; j++)
      {
         TempIND[j]=iAD(NULL,PERIOD_M5,j);       // ЗДЕСЬ ОШИБКА array item cannot be assigned
         Print("TempIND[",j,"] = ",TempIND[j]);
      }

}

Ich nenne es so:

SaveDataIND(TempIND, 20);
Wo ist das Problem?
 
artmedia70:

Ja... Ich tue mich schwer mit Arrays... Beim Versuch, ein Array mit Induktionsdaten zu füllen, ist die kleine Funktion eine boo-o-o-o-o-o-little Pattsituation... Können Sie mir sagen, was ich falsch mache?

Ich nenne es so:

Wo zum Teufel liegt das Problem?



Ihr Hund bei der Übergabe von Parametern an die Funktion, wenn Sie als SaveDataIND(double TempIND[]) übergeben

double TempIND[ ] ist in der Tat ein neues Array für die Funktion, aber ohne das Recht, Parameter zu ändern, versuchen Sie SaveDataIND(double & TempIND[])