[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 448

 
Pacman:

Bitte entschuldigen Sie, dass ich eine Frage doppelt stelle, aber ich kann die folgenden Beispiele nicht ausführen, bis ich das Problem gelöst habe.

Bitte helfen Sie mir, es herauszufinden.

Ich habe ein einfaches Skript geschrieben, um eine Bestellung zu öffnen (aus dem MQL4-Tutorial).

Ich habe es für 4-stellige Instrumente codiert.

Ich habe ein Konto bei einem Unternehmen, das 5 Ziffern nach dem Punkt hat.

Können Sie bitte den Code für 5 Ziffern ändern, und warum erscheint beim Ausführen des Skripts der Fehler 4109 (Handel nicht erlaubt)?

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-150*Point,Bid+150*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

Aber es muss überhaupt nicht funktionieren. Sie müssen die Gültigkeit der Stop- und Take-Größen von Ihrem Maklerunternehmen überprüfen lassen

ERR_TRADE_NOT_ALLOWED 4109 Handel ist nicht erlaubt. Sie müssen die Option "EA den Handel erlauben" in den EA-Eigenschaften aktivieren.
 
artmedia70:

Nur funktioniert das nicht unbedingt. Wir müssen prüfen, ob die Stoppuhr Ihres Maklerunternehmens die Größe der Stoppuhr zulässt.

ERR_TRADE_NOT_ALLOWED 4109 Handel ist nicht erlaubt. Sie sollten die Option "EA den Handel erlauben" in den EA-Eigenschaften aktivieren.

Herzlichen Dank!

Erforderlich, um EA den Handel zu ermöglichen)

 

Einen guten Tag an alle.

Entschuldigen Sie, wenn dies bereits angesprochen wurde, aber es sind 540 Seiten.

Das ist das Problem. In MT4 überschneiden sich die Orders mit gleichem Preis und nur eine Order ist sichtbar. Gibt es Einstellungen in MT4, damit z.B. zwei Orders in einem Chart nebeneinander angezeigt werden, ohne sich zu überlappen. Wenn es keine solchen Einstellungen gibt, ist es dann möglich , eine Tabelle oder ein Diagramm mit einer solchen Funktion zu erstellen?

 
pyrsikov:

Guten Tag an alle.

Entschuldigen Sie, wenn diese Frage schon einmal gestellt wurde, aber ich muss 540 Seiten durchgehen.

Das ist das Problem. In MT4 überschneiden sich die Orders mit gleichem Preis und nur eine Order ist sichtbar. Gibt es Einstellungen in MT4, damit z.B. zwei Orders im Chart nebeneinander angezeigt werden, ohne sich zu überlappen. Wenn es keine solchen Einstellungen gibt, ist es dann möglich, eine Tabelle oder ein Diagramm mit einer solchen Funktion zu erstellen?

Mit der Tastenkombination Strg+t erscheint unten eine Tabelle mit allen offenen Positionen, wenn Sie auf die Registerkarte "Handel" wechseln.
 

Bitte helfen Sie mir - ich schreibe einen EA - ich habe Code als Substrat verwendet;

if(drawBacker){
for(int x=0;x<7;x++)
for(int y=0;y<29;y++)
{
ObjectCreate("A_Fon "+x+y,OBJ_LABEL,0,0,0,0);
ObjectSet("A_Fon "+x+y, OBJPROP_CORNER, positionWindow); // positionWindow // Txt_Location
ObjectSet("A_Fon "+x+y,OBJPROP_XDISTANCE,x*20+5);
ObjectSet("A_Fon "+x+y,OBJPROP_YDISTANCE,y*20+9);
ObjectSetText("A_Fon "+x+y,CharToStr(110),26, "Wingdings",colorSubstrate);//Rot);
}
if (drawWingdings==False)
{
for( int posp=1000;posp>0;posp--)
{
ObjectDelete("A_Fon "+posp);
ObjectDelete("A_Fon0"+pospp);
ObjectDelete("A_Fon00");
}
}
}

Als Ergebnis habe ich ein Chaos, da eine große Anzahl von Objekten auf dem Diagramm gezeichnet werden.

Bitte nennen Sie mir den normalen Code zum Einstellen des Texthintergrunds.

 
7777877:

Guten Tag... Frage zu den Funktionen FileIsEnding und FileIsLineEnding. Um zu verstehen, wie die Funktionen FileIsEnding und FileIsLineEnding funktionieren, habe ich das folgende Skript geschrieben:

Nachdem eine Zahl in die Datei geschrieben wurde, finden Sie in hexadezimaler Form den folgenden Eintrag

00000000: 31 2E 33 35 38 34 0D 0A | | 1.3584...

Jeder Buchstabe oder jede Zahl benötigt 1 Byte oder 8 Bits, die letzten beiden Zeichen heißen Zeilenvorschub und Wagenrücklauf, sie werden automatisch angehängt, so dass die Dateigröße 8 Byte und nicht 6 beträgt.

Führen Sie Ihr leicht geändertes Skript aus und achten Sie darauf, wie sich der Cursor bewegt (die Aufzählung ist absichtlich größer als die Dateigröße, damit Sie sehen können, wo der Fehler auftritt.

int start()                                                              //функция start
  {                                                                      //начало start
   double Timestart=GetTickCount();                                      //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   string name="Копия Запись чисел в файл.csv";                          //имя создаваемого файла
   bool h;                                                               //переменная: значение функции FileIsEnding
   bool h_l;                                                             //переменная: значение функции FileIsLineEnding
   int error;                                                            //переменная: ошибка
   int handle=FileOpen(name,FILE_CSV|FILE_WRITE,';');                    //открываем заданный файл n записываем туда данные
   int запись=FileWrite(handle,DoubleToStr(1.3584,4));                   //записываем цены OHLC в файл csv (в преобразованном виде, т.е в виде текста)
   FileClose(handle);                                                    //закрываем файл
//---------------------------------------------------------------------------------------- 2 -
   handle=FileOpen(name,FILE_CSV|FILE_READ,';');                         //открываем заданный файл
   int size=FileSize(handle);                                            //вычисляем размер заданного файла
   Print("Размер файла ",name," составил ",size," байт");
   for(int i=0;i<=size;i++)
   {
   GetLastError();
   bool pos=FileSeek(handle,i,SEEK_SET);                                 //смещаем от начала вправо указатель файла
   int pos1=FileTell(handle);
   double чтение=FileReadNumber(handle);                                 //считываем число из текущей позиции (уже измененной функцией FileSeek) файлового указателя
   h=FileIsEnding(handle);                                               //устанавливаем текущее значение переменной h
   h_l=FileIsLineEnding(handle);                                         //устанавливаем текущее значение переменной h_l
   error=GetLastError();                                                 //значение ошибки, производимой функцией FileIsEnding
   if(error!=0)Alert("Текущая ошибка ",error);                           //если код текущей ошибки не равен 0, то получаем номер текущей ошибки
//----------------------------------------------------------------------------------------- 3 -
   Print(" Функция FileSeek вернула: ",pos,
         " Указатель находится в позиции - ",pos1,
           " Функция FileReadNumber(handle) вернула: ",чтение);//печать сообщения 
   }
   FileClose(handle);                                                    //закрываем файл
//----------------------------------------------------------------------------------------- 4 -
   return(0);                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 5 -
 

Wenn Sie den Indikator debuggen, müssen Sie ein Array von Preis- und Zeitwerten von bestimmten Bars auf dem Shift ausgeben.

      price1 = iMA(Symbol(),i_maTF,i_maPeriod,i_maShiftByPrice,i_maMethod,i_maPrice,i_shiftBarsBack1+i);       // Цена в точке А
      price2 = iMA(Symbol(),i_maTF,i_maPeriod,i_maShiftByPrice,i_maMethod,i_maPrice,i_shiftBarsBack2+i);       // Цена в точке В
      time1 = iTime(Symbol(),Period(),i_shiftBarsBack1 + i - 1);                                               // Время в точке А
      time2 = iTime(Symbol(),Period(),i_shiftBarsBack2 + i - 1);                                               // Время в точке В

Das alles erfahre ich natürlich innerhalb des Betreibers:

for(i = limit - 1;i > 0;i--)

Dann übertrage ich die Preis- und Zeitwerte in Arrays, um mit ihnen weiter zu arbeiten:

      varsPrice1[i] = price1;                                                                        // Массив цен в точке А
      varsPrice2[i] = price2;                                                                        // Массив цен в точке В
      varsTime1[i] = time1;                                                                          // Массив времени в точке А
      varsTime2[i] = time2;                                                                          // Массив времени в точке В

Ich versuche, das, was ich bereits habe, sofort danach auszudrucken:

      Print("i = ", i," time1 = ", time1, " price1 = ", price1);
      Print("i = ", i," time2 = ", time2, " price2 = ", price2);
      Print("i = ", i," varsTime1[i] = ", varsTime1[i], " varsPrice1[i] = ", varsPrice1[i]);
      Print("i = ", i," varsTime2[i] = ", varsTime2[i], " varsPrice2[i] = ", varsPrice2[i]);

Dies wird im Expertenprotokoll ausgedruckt:

2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 41 varsTime1[i] = 1281381900 varsPrice1[i] = 0
2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 41 time2 = 1281382200 price2 = 0
2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 41 time1 = 1281381900 price1 = 0
2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 42 varsAngle[i] = 0
2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 42 varsTime2[i] = 1281381900 varsPrice2[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 45 varsTime2[i] = 1281381000 varsPrice2[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 45 varsTime1[i] = 1281380700 varsPrice1[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 45 time2 = 1281381000 price2 = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 45 time1 = 1281380700 price1 = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 46 varsAngle[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 46 varsTime2[i] = 1281380700 varsPrice2[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 46 varsTime1[i] = 1281380400 varsPrice1[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 46 time2 = 1281380700 price2 = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 91 time1 = 1281366600 price1 = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 varsAngle[i] = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 varsTime2[i] = 1281366600 varsPrice2[i] = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 varsTime1[i] = 1281366300 varsPrice1[i] = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 time2 = 1281366600 price2 = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 time1 = 1281366300 price1 = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 93 varsAngle[i] = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 93 varsTime2[i] = 1281366300 varsPrice2[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 varsAngle[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 varsTime2[i] = 1281380700 varsPrice2[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 varsTime1[i] = 1281380400 varsPrice1[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 time2 = 1281380700 price2 = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 time1 = 1281380400 price1 = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 46 varsAngle[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 46 varsTime2[i] = 1281380400 varsPrice2[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 46 varsTime1[i] = 1281380100 varsPrice1[i] = 0
2012.10.20 14:47:09     2010.08.10 02:50  AngleByTg GBPUSD,M5: i = 49 varsTime1[i] = 1281379200 varsPrice1[i] = 0

Hier ist deutlich zu sehen, dass die Preiswerte von varsTime1[i] undvarsTime2[i] und nur die Preise von time1 undtime2 immer 0 sind. Was ist daran falsch?

 
Vinin:

Sie sollten uns den gesamten Code geben. Sie wollen nicht raten, was für Sie klar ist.

Ich verstehe, dass ich nicht darüber nachdenken möchte, aber können Sie mir wenigstens einen Hinweis geben, wenn das Problem für Sie klar ist?
 
Hallo Forumsnutzer!!!!
Leute, ich habe eine Frage - wer weiß, in welcher Datei Skripte gespeichert sind, die den "Hotkeys" zugeordnet sind? Ich möchte diese Datei mit den bereits benannten "Hotkeys" abspeichern, damit ich nicht jedes Mal nach einer Neuinstallation des Terminals, wenn plötzlich so ein Bedarf besteht, diese Tasten erneut zuweisen muss ..., sondern nur eine Datei und alles überwerfen muss ...
Ich danke Ihnen allen im Voraus.
 
hoz:

Wenn Sie den Indikator debuggen, müssen Sie ein Array von Preis- und Zeitwerten von bestimmten Bars auf dem Shift ausgeben.

Das alles erfahre ich natürlich innerhalb des Betreibers:

Dann übertrage ich die Preis- und Zeitwerte in Arrays, um mit ihnen weiter zu arbeiten:

Ich versuche, das, was ich bereits habe, sofort danach auszudrucken:

Dies wird im Expertenprotokoll ausgedruckt:

Hier ist deutlich zu sehen, dass die Preiswerte von varsTime1[i] undvarsTime2[i] und nur die Preise von time1 undtime2 immer 0 sind. Was ist los?


i_maTF == Zeitraum()??????,

i_maPeriod nimmt einen vernünftigen Wert an???

Vielleicht ist etwas mit i_maShiftByPrice nicht in Ordnung?

Es ist schwer, das genauer zu sagen.