Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 801
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich verstehe nicht, wo das Problem liegt?
int start()
{
bool i;
int ticket;
double Pricem;
datetime Timen;
string Symb=Symbol();
ticket=OrderSend(Symb,OP_SELL,0.1,Bid,3,Ask+4*Point,Ask-12*Point);
i=OrderSelect(0,SELECT_BY_POS);
while(true)
{
RefreshRates();
Timen=OrderCloseTime();
if(Timen>0)
{
Pricem=OrderClosePrice();
Alert(Pricem);
Alert("ордер закрылся");
Sleep(30000);
}
Sleep(10);
}
return;
}
Ich löse die Aufgabe, alle offenen Charts mit MQL4-Tools zu schließen. Es gibt 3 offene Charts mit verschiedenen Währungspaaren und dies ist der Skriptcode:
Wenn ich das Skript ausführe, wird nur einer der drei Charts geschlossen, und hier sind die Ausdrucke aus dem Protokoll:
Das bedeutet, dass nach dem Schließen eines Diagramms das aktuelle Diagramm das andere sein sollte, aber:
1. Nachdem das erste Diagramm geschlossen wurde,gibt die FunktionChartIDden Bezeichner des geschlossenen Diagramms anstelle des aktuellen Diagramms zurück
2. DieFunktion ChartClose() gibt bei 2 und 3 Iterationen true zurück, was bedeutet, dass sie das bereits geschlossene Fenster erfolgreich schließt...
Wer weiß, wo der Fehler liegt und wie man dieses Problem lösen kann?
Ich verstehe nicht, wo das Problem liegt?
Es sollte eine Abschlussmeldung erscheinen. Der Auftrag wird eröffnet, erreicht die Haltestelle, wird geschlossen und das war's! Wo liegt der Fehler?
Ich denke, OrderSelect() sollte innerhalb einer while-Schleife sein, und außerdem wird die Positionsnummer falsch sein, weil sie sich nach dem Schließen ändert - in diesem Fall ist es besser, aus dem Ticket auszuwählen
Ich löse die Aufgabe, alle offenen Charts mit MQL4-Tools zu schließen. Es gibt 3 offene Charts mit verschiedenen Währungspaaren und dies ist der Skriptcode:
Wenn ich das Skript ausführe, wird nur einer der drei Charts geschlossen, und hier sind die Ausdrucke aus dem Protokoll:
Das bedeutet, dass nach dem Schließen eines Diagramms das aktuelle Diagramm das andere sein sollte, aber:
1. Nachdem das erste Diagramm geschlossen wurde,gibt die FunktionChartIDden Bezeichner des geschlossenen Diagramms anstelle des aktuellen Diagramms zurück
2. DieFunktion ChartClose() gibt bei 2 und 3 Iterationen true zurück, was bedeutet, dass sie das bereits geschlossene Fenster erfolgreich schließt...
Wer weiß, wo der Fehler liegt und wie man dieses Problem lösen kann?
pako, manchmal funktioniert es, manchmal nicht, ich weiß nicht, warum... Ich erhalte eine Fehlermeldung:
2014.12.11 17:52:12.456 Zugriffsverletzung gelesen auf 0x09295000 in 'C:\.....................ex4'
Könnte es daran liegen, dass es versucht, das Diagramm zu schließen, auf das das Skript angewandt wird?
PS funktioniert korrekt, wenn das Skript an das erste Diagramm von links angehängt ist. Wenn ich sie jedoch auf ein anderes Diagramm lege, erhalte ich eine Fehlermeldung
pako, manchmal funktioniert es, manchmal nicht, ich weiß nicht, warum... Ich erhalte eine Fehlermeldung:
2014.12.11 17:52:12.456 Zugriffsverletzung gelesen auf 0x09295000 in 'C:\.....................ex4'
Könnte es daran liegen, dass es versucht, das Diagramm zu schließen, auf das das Skript angewandt wird?
PS funktioniert korrekt, wenn das Skript an das erste Diagramm von links angehängt ist. Wenn ich sie jedoch auf ein anderes Diagramm lege, erhalte ich eine Fehlermeldung
Leute, helft mir hier aus
Das Problem ist die folgende Funktion, um den Auftrag in Nicht-Verlust zu übersetzen, beginnt es falsch zu arbeiten, wenn ich es auf die Yen-Paare gesetzt und lassen alle offenen Aufträge in Nicht-Verlust
ich lasse sie alle in Ordnung, aber bei fünf Ziffern kehrt es auf Null zurück, auch wenn ich es nur auf fünf Ziffern einstelle, aber das Beste ist, dass es funktioniert, wenn ich es auf fünf einstelle
Was ist der Grund für diese Arbeit? Was sollte in diesen Funktionen berücksichtigt werden, damit die korrekte Ausführung erfolgt und nicht davon abhängt, in welchem Fenster ich drei oder fünf Ziffern in die EA-Operation geworfen habe?
Ich danke Ihnen vielmals.
}
//==================================================================================================
// функция перевода ордеров стоп лоса в без убыток по всем открытым ордерам
//==================================================================================================
if(_Simbol==false)//если false то по всем ордерам открытым
{
for(int i=0;i<OrdersTotal();i++)//цикл перебора ордеров
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))//будем искать следующие
{
if(OrderType()==OP_BUY) //если тип бай
{
double bid=MarketInfo(OrderSymbol(),MODE_BID);//последний известный бид инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()<OrderOpenPrice())//если стоп лос меньше цены открытия
{
if(bid-Dist_Perivoda*point>OrderOpenPrice())//бид-профит*пункт больше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
if(OrderType()==OP_SELL)//если тип селл
{
double ask=MarketInfo(OrderSymbol(),MODE_ASK);//последний известный аск инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()==0||OrderStopLoss()>OrderOpenPrice())//если стоп лос больше цены открытия или равен нолю
{
if(ask+Dist_Perivoda*point<OrderOpenPrice())//аск +профит*пункт меньше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
}
}
}
Danke für den Code, ich verstehe das Wesentliche, obwohl ich immer noch manchmal einen Fehler bekomme.
Experimentiert mit Funktionen, die Diagramm-IDs anzeigen. Was ChartFirst() in der Dokumentation bedeutet, ist völlig unklar, man kann es beliebig interpretieren - sei es das erste Chart, das in der Reihenfolge von links geöffnet wurde, oder das erste Chart, das von allen geöffneten Charts (in der Zeit) geöffnet wurde, oder das erste, das jemals im Terminal geöffnet wurde (die Wahrscheinlichkeit, dass es jetzt geöffnet ist, ist fast null, also macht es keinen Sinn, es zu schließen). Ich neige eher zur letzteren Version, denn ich habe noch nie gesehen, dass diese Funktion die ID des Diagramms zurückgibt, das gerade geöffnet ist.
Danke für den Code, ich verstehe das Wesentliche, obwohl ich immer noch manchmal einen Fehler bekomme.
Experimentiert mit Funktionen, die Diagramm-IDs anzeigen. Was ChartFirst() in der Dokumentation bedeutet , ist völlig unklar, man kann es beliebig interpretieren - es kann das erste Diagramm bedeuten, das in der Reihenfolge von links geöffnet wurde, oder das erste Diagramm, das von allen geöffneten Diagrammen (in der Zeit) geöffnet wurde, oder das erste Diagramm, das jemals im Terminal geöffnet wurde (die Wahrscheinlichkeit, dass es jetzt geöffnet ist, ist fast null, also macht es keinen Sinn, es zu schließen). Ich neige eher zur letzteren Version, denn ich habe noch nie gesehen, dass diese Funktion die ID des Diagramms zurückgibt, das gerade geöffnet ist.
ChartFirst
Gibt die Karten-ID der ersten Karte des Client-Terminals zurück.
Ich verstehe, dass dies das Diagramm ganz links ist.