Hallo. Hilfe für Dummies: Ich habe einen EA, der schwebende Orders auf dem Min. und Max. der vorherigen Kerze platzieren kann. Öffnung in Richtung der Kerze.
Die Notwendigkeit:
- Um die Eröffnungsrichtung zu ändern, d.h. von schwebendem Kauf zu schwebendem Verkauf.
- Min und Max der vorherigen Kerze anstelle von Min und Max des Vortages
- Lassen Sie alles andere wie es ist, d.h. löschen Sie Aufträge, Losparameter, Stop-Los, magische Zahl
Alle meine Aktionen führen entweder zu Fehler 130 im Tester oder kompilieren überhaupt nicht. Danke für jeden Rat.
Nachfolgend sehen Sie den funktionierenden Code, ohne mein Zutun.
extern double Lot = 0.01; extern int StopLoss = 0; extern int TakeProfit = 0; extern int Magic = 618;
Bitte helfen Sie mir, die Order sollte mit dem 4-fachen des Abstandes vom Höchststand zum Orderopenprice schließen
Was habe ich falsch gemacht?
alle Aufträge schließen innerhalb von 3 Pips nach Eröffnung
Haben Sie versucht, das Ergebnis Ihrer Formel zu berechnen? Wenn nicht, dann tun Sie es, denn ich bekomme einen Scheißdreck. Vielleicht liegt es daran, dass ich nicht alle Bedingungen kenne.
Symbol - Initialisierung erwartet C:\Programmdateien\MetaTrader Finam\experts\1.mq4 (8, 13)
externdouble lot=0.1;
externdouble tp=0;
externdouble sl=0;
int Real_Order=-1; // Пока рыночных нетstring Symb=Symbol; // Финанс. инструментint start() // Спец. функция start()
{
OrderSend(Symbol(),OP_BUY,0.1,Ask,0,Bid-sl*Point,Ask+tp*Point);
if(IsDemo()) PlaySound("alert.wav");
for (int i=1; i<=OrdersTotal(); i++) //Цикл по всем ордерам,..
{ //отражённым в терминалеif(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
{
//-------------------------------------------------------------- if (OrderSymbol()!= Symb) continue; // Не наш фин.инструм.int Tip=OrderType(); // Тип ордераif (Real_Order>1) continue; //отложник ордер //------------------------------------------------------ 4 --double Price=OrderOpenPrice(); // Цена ордераifNormalizeDouble(tp,sl,Digits) // Выбор самого близкого орд
{
Real_Order=Tip; // Есть рыночный ордерint Ticket=OrderTicket(); // Номер ордераdouble Lot=OrderLots(); // Количество лотов
}
} //Конец анализа ордера
} //Конец перебора орд.//---------------------------------------------------------------------+while(true) // Цикл закрытия орд.
{
if (Real_Order==-1) // Если рыночных нет
{
Alert("По ",Symb," рыночных ордеров нет");
break; // Выход из цикла закр
}
//--------------------------------------------------------- 7 --switch(Real_Order) // По типу ордера
{
case0: double Price_Cls=Bid; // Ордер Buystring Text="Buy "; // Текст для Buybreak; // Из switchcase1: Price_Cls=Ask; // Ордер Sell
Text="Sell "; // Текст для Sell
}
Alert("Попытка закрыть ",Text," ",Ticket,". Ожидание ответа..");
bool Ans=OrderClose(Ticket,Lot,Price_Cls,2);// Закрытие ордера//--------------------------------------------------------- 8 --if (Ans==true) // Получилось :)
{
Alert ("Закрыт ордер ",Text," ",Ticket);
break; // Выход из цикла закр
}
//--------------------------------------------------------- 9 --int Error=GetLastError(); // Не получилось :(switch(Error) // Преодолимые ошибки
{
case135:Alert("Цена изменилась. Пробуем ещё раз..");
RefreshRates(); // Обновим данныеcontinue; // На след. итерациюcase136:Alert("Нет цен. Ждём новый тик..");
while(RefreshRates()==false) // До нового тикаSleep(1); // Задержка в циклеcontinue; // На след. итерациюcase146:Alert("Подсистема торговли занята. Пробуем ещё..");
Sleep(500); // Простое решениеRefreshRates(); // Обновим данныеcontinue; // На след. итерацию
}
switch(Error) // Критические ошибки
{
case2 : Alert("Общая ошибка.");
break; // Выход из switchcase5 : Alert("Старая версия клиентского терминала.");
break; // Выход из switchcase64: Alert("Счет заблокирован.");
break; // Выход из switchcase133:Alert("Торговля запрещена");
break; // Выход из switchdefault: Alert("Возникла ошибка ",Error);//Другие варианты
}
break; // Выход из цикла закр
}
return; // Выход из start()
}
Symbol - Initialisierung erwartet C:\Programmdateien\MetaTrader Finam\experts\1.mq4 (8, 13)
Sie haben:
string Symb=Symbol; // Финанс. инструмен
Das müssen Sie:
string Symb=Symbol(); // Финанс. инструмент
Wenn Sie auf die Fehlermeldung doppelklicken, springt der Cursor an die (übrigens) angegebene Stelle, an der der Kompilierungsfehler aufgetreten ist, d. h. hier: (8, 13)
Danach werden andere Fehler ausgelöst... :)
Verschieben Sie die obige Zeile an den Anfang der Funktion start()
Das ist ein Anfang - dann sollten Sie sich um die anderen Fehler kümmern...
Leute, wir brauchen etwas Hilfe. Beschreiben Sie die Situation.
der aktuelle Preis ist 1,4100 (zum Beispiel) Ich muss eine Bar, deren offen ist innerhalb (plus oder minus 10 pt von 1,4100) von 1,4090 bis 1,4110 zu finden - das ist ok.
Zum Beispiel hat das Programm den Balken mit der Eröffnung bei 1,4105 gefunden, der zu mir passt.
Dann sollte das Programm diesen Balken mit dem Balken links und rechts davon vergleichen, und wenn er niedriger ist, ist er geeignet.
Hallo. Hilfe für Dummies: Ich habe einen EA, der schwebende Orders auf dem Min. und Max. der vorherigen Kerze platzieren kann. Öffnung in Richtung der Kerze.
Die Notwendigkeit:
- Um die Eröffnungsrichtung zu ändern, d.h. von schwebendem Kauf zu schwebendem Verkauf.
- Min und Max der vorherigen Kerze anstelle von Min und Max des Vortages
- Lassen Sie alles andere wie es ist, d.h. löschen Sie Aufträge, Losparameter, Stop-Los, magische Zahl
Alle meine Aktionen führen entweder zu Fehler 130 im Tester oder kompilieren überhaupt nicht. Danke für jeden Rat.
Nachfolgend sehen Sie den funktionierenden Code, ohne mein Zutun.
extern double Lot = 0.01;
extern int StopLoss = 0;
extern int TakeProfit = 0;
extern int Magic = 618;
int Up_bars = 0;
int Down_bars = 0;
double StopLoss_new = 0;
double TakeProfit_new = 0;
//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
for( int cnt=0;cnt<OrdersTotal();cnt++)
{
if (OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)>0)
{
if (
(OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
&& OrderMagicNumber() == Magic
&& OrderSymbol() == Symbol()
&& OrderComment() != DoubleToStr(Bars,0)
)
{
Kommentar("okkk");
OrderDelete(OrderTicket());
}
}
}
StopLoss_new = StopLoss;
TakeProfit_new = TakeProfit;
if (Up_bars != Bars)
{
if (High[1]-Ask >= MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
if (StopLoss_new != 0) StopLoss_new = NormalizeDouble(High[1]-StopLoss*Point,Digits);
if (TakeProfit_new != 0) TakeProfit_new = NormalizeDouble(High[1]+TakeProfit*Point,Digits);
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(High[1],Digits),10,StopLoss_new,TakeProfit_new,DoubleToStr(Bars,0),Magic,0,Green) < 0)
{
Sleep(1000);
RefreshRates();
}
else
{
Up_bars = Bars;
}
}
}
StopLoss_new = StopLoss;
TakeProfit_new = TakeProfit;
if (Down_bars != Bars)
{
if (Bid-Low[1] >= MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
if (StopLoss_new != 0) StopLoss_new = NormalizeDouble(Low[1]+StopLoss*Point,Digits);
if (TakeProfit_new != 0) TakeProfit_neu = NormalizeDouble(Low[1]-TakeProfit*Point,Digits);
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Low[1],Digits),10,StopLoss_neu,TakeProfit_neu,DoubleToStr(Bars,0),Magic,0,Green) < 0)
{
Sleep(1000);
RefreshRates();
}
else
{
Down_bars = Bars;
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
Hallo. Hilf einem Dummkopf, das zu verstehen:
Kapitän Offensichtlichkeit ... und doch gibt mir jemand einen Hinweis.
Ich gebe Ihnen einen Tipp: Fassen Sie diesen Ausdruck in Worte. Und Sie werden sehen, dass Sie sich falsch ausgedrückt haben.
PS.
Wenn es für Sie so offensichtlich ist, wo ein Fehler zu suchen ist, warum fragen Sie dann?
Wenn Fehler 130. Überdenken Sie das Anhalten und Mitnehmen.
Bitte helfen Sie mir, die Order sollte mit dem 4-fachen des Abstandes vom Höchststand zum Orderopenprice schließen
Was habe ich falsch gemacht?
alle Aufträge schließen innerhalb von 3 Pips nach Eröffnung
Haben Sie versucht, das Ergebnis Ihrer Formel zu berechnen? Wenn nicht, dann tun Sie es, denn ich bekomme einen Scheißdreck. Vielleicht liegt es daran, dass ich nicht alle Bedingungen kenne.
Nur ein Fehler - ich weiß nicht, wie ich ihn beheben kann. Wo liegt das Problem?
'Symbol' - Initialisierung erwartet C:\Programmdateien\MetaTrader Finam\experts\1.mq4 (8, 13)
Symbol - Initialisierung erwartet C:\Programmdateien\MetaTrader Finam\experts\1.mq4 (8, 13)
alex12, geben Sie etwas Konkretes an, etwa
Nur ein Fehler - weiß nicht, wie man ihn behebt. Wo liegt das Problem?
'Symbol' - Initialisierung erwartet C:\Programmdateien\MetaTrader Finam\experts\1.mq4 (8, 13)
Symbol - Initialisierung erwartet C:\Programmdateien\MetaTrader Finam\experts\1.mq4 (8, 13)
Sie haben:
Das müssen Sie:
Wenn Sie auf die Fehlermeldung doppelklicken, springt der Cursor an die (übrigens) angegebene Stelle, an der der Kompilierungsfehler aufgetreten ist, d. h. hier: (8, 13)Danach werden andere Fehler ausgelöst... :)
Verschieben Sie die obige Zeile an den Anfang der Funktion start()
Das ist ein Anfang - dann sollten Sie sich um die anderen Fehler kümmern...
Hallo zusammen.
Leute, wir brauchen etwas Hilfe. Beschreiben Sie die Situation.
der aktuelle Preis ist 1,4100 (zum Beispiel) Ich muss eine Bar, deren offen ist innerhalb (plus oder minus 10 pt von 1,4100) von 1,4090 bis 1,4110 zu finden - das ist ok.
Zum Beispiel hat das Programm den Balken mit der Eröffnung bei 1,4105 gefunden, der zu mir passt.
Dann sollte das Programm diesen Balken mit dem Balken links und rechts davon vergleichen, und wenn er niedriger ist, ist er geeignet.
Artem, der Trick dabei ist, dass es unten eine Zeile wie diese gibt:
Der von Ihnen vorgeschlagene Weg macht also nicht viel Sinn - wenn ich richtig verstehe, was alex12 will.