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

 
hoz:

Wie kann man erreichen, dass bei der Übergabe eines Trendparameters an diese Funktion, die für die Übergabe des vermeintlichen Haupttrends im Moment zuständig ist, die Berechnung auf diesem Parameter basiert?

D.h. wenn Trend == abwärts, war die Funktion in der Schleife wie jetzt, und wennTrend == aufwärts, wurden Open[i] und Close[i] in der Schleife vertauscht, so dass die Bedingungen eingehalten wurden. Denn in diesem Fall ist der Schlusskurs des Balkens niedriger als der Eröffnungskurs und die Differenz wird als Minus ausgewiesen.


bool trend;

if ((2*trend-1)*Δ=>const) cnt++;
if ((2*trend-1)*Δ<const) cnt=0;
In diesem Fallnimmt2*Trend-1die Werte +1 und -1 an, d.h. wenn Trend=wahr ist, ist es ein Aufwärtstrend und wenn Trend=falsch ist, ist es ein Abwärtstrend, während Δ jeweils mit richtigem oder falschem Vorzeichen genommen wird.Dies ist nur ein Beispiel dafür, dass die Mathematik das Wenn ersetzt.
 

gyfto, funktioniert das Testskript aus dem Kit bei Ihnen?

Ich hätte das getan:

//в шапке
#include <SharedMemoryMT4.mqh>
//в инит. Создание и открытие не обязательно. Эти функции для ускорения работы с памятью.
MemoryCreate(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));
// Вариант более быстрый, чем выше:
MemoryCreateProjection(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));

//в деинит
MemoryCloseName(1, "", "ind");
//в старт вместо 
for(; i<Σ; i++) MemoryWriteInt(1, "", -1, "ind", i * 4, iBars(sn, 1));//ind[i]=iBars(sn, 1);
#property show_inputs
#include <SharedMemoryMT4.mqh>
extern int x;//сколько секунд назад с данного момента прикрепления смотрим значения TOLHCV

int init()
  {
//   MemoryOpen(1, "", -1, "ind"); // Это не требуется.
   return(0);
  }
int start()
  {
   //MemoryReadInt(1, "", -1, "ind", i) это ind[i], GlobalVariableGet("final") это последний элемент в массиве, а ф-ла выглядит так: n=ind[final]-ind[final-x]+1
   int n=MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final"))-MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final")-x)+1;
   Alert(TimeToStr(TimeCurrent(),TIME_SECONDS), ": Time=", TimeToStr(Time[n], TIME_SECONDS), ", Open=", Open[n], ", High=", High[n], ", Low=", Low[n], ", Close=", Close[n], ", Volume=", Volume[n]);
   return(0);
  }

Der Rest ist richtig. Nur auf das Datenübertragungsprotokoll wurde nicht eingegangen.

Das Anlegen, Öffnen und Zuweisen von Speicher ist optional. Diese Funktionen dienen zur Beschleunigung der Speicherverwaltung. Für den einfachsten Bibliotheksbetrieb benötigen Sie nur die Lese- und Schreibfunktionen. Die Bibliothek wird den Rest erledigen. Außerdem können Sie lesen, bevor Sie schreiben. Es wird Speicher in der angeforderten Größe zugewiesen und die Funktion gibt Null zurück. Da es dort noch nichts gibt.

 

Zhunko, ich glaube nicht. Comment() gibt nichts aus, sondern schreibt nur in das Protokoll, in das Log:

15:51:13 Check_SharedMemoryMT4.dll AUDUSD,M1 inputs: Area=1; InitPrefix=""; UserGlobal=25; UserTerminal=50; UserWindow=100; CheckWriteRead=false; CheckWrite=false; CheckRead=false; CheckGeneral=false
CheckProjection=false; CheckClose=false; NamePrefix="Check"; NameMemory0="CheckMemory0"; NameMemory1="CheckMemory1"; NameMemory2="CheckMemory2"; NameMemory3="CheckMemory3"; NameMemory4="Memory4"
Index=-1; StartByte=0; MemorySize=64000; bValue=true; cValue=123; ucValue=255; shValue=32100; ushValue=65535; nValue=2147012345; fValue=1234.56789012; dValue=1234.56789012; sValue0="Контроль = 1234.56789"
sValue1="Контроль = 9876.54321"; sValue2="Привет мир!!!"; sValue3="Миру мир!"; sValue4="Неправильное  имя";

Es ist alles in einer Zeile, ich habe es hierher verschoben, damit es hier keine abnormale Bildschirmbreite gibt.

 
gyfto:

Zhunko, ich glaube nicht. Comment() gibt nichts aus, sondern schreibt nur in das Protokoll, in das Log:

Es steht alles in einer Zeile, ich habe es hierher verschoben, damit es keine abnorme Bildschirmbreite gibt.

Schauen Sie sich das Video an. Tun Sie genau dasselbe. Wenn es nicht klappt, finden wir schon eine Lösung. Das funktioniert bei mir.
 
Ich stehe wahrscheinlich kurz davor, einen Wettbewerb für den dümmsten Fehler zu gewinnen. Ich hatte keine ADXBars GV-Variable deklariert, also schrieb ich "Methodenfehler". Außerdem gab es keine Ausrichtung an der inneren Grenze. Aber der Alarm gibt immer noch alle Nullen aus, mit oder ohne Ausrichtung. Ich werde mir das Video ansehen und versuchen, es zuerst selbst herauszufinden. Wenn ich versage, werden wir versuchen, es gemeinsam herauszufinden.
 

TarasBY artmedia70 hoz

Danke, meine Herren Offiziere!

 
CYBOPOB:

TarasBY artmedia70 hoz

Danke, meine Herren Offiziere!

Haben Sie sich erschossen? :)))
 
artmedia70:
Was, du hast dich erschossen? :)))


Zweimal 8-[
 

Hallo! Bitte helfen Sie mir bei diesem Thema:

https://www.mql5.com/ru/forum/144634

Herzlichen Dank!

 

Ich habe den verdammten Fehler auch. In Wirklichkeit gibt es überhaupt keine Logik. Um eine schwebende Order gemäßhttps://book.mql4.com/ru/appendix/limits zu eröffnen, muss der Eröffnungskurs entweder unter Bid (für Verkauf) oder über Ask (für Kauf) liegen. Ich tue, was erforderlich ist.

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);

   if (ND(OOP) > Ask)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
       lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Von Zeit zu Zeit erhalte ich 0 und 130 Fehler. 130 ist zwar ein Fehler des falschen Stopps, der bei der Änderung, aber nicht bei der Auftragseröffnung auftreten kann.

Auf dem Screenshot werden die Situation und der Ausdruck mit der pr-Funktion angezeigt.

Fehler bei falschem Stopp

Bitte teilen Sie mir mit, wie ich diesen Fehler beheben kann. Ich habe diesen Fehler wirklich satt. Logischerweise geht es gar nicht um das Thema.