[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 95
if ((Opb==0) && (MA_1_t > MA_2_t + Rastvor*Point)) // Если разница между
{ // ..МА 1 и 2 большая
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
Opb++;// Открытие только одного ордера
Ops=0;
if (VKO1>=Ask) {VP=VP*Koff;} // При прибыли предыдущего умножать на коэф.
if (VKO1<Ask) {VP=VP*Koff1;}// При убытке предыдущего умножать на коэф1.
}
if ((Ops==0) && (MA_1_t < MA_2_t - Rastvor*Point)) // Если разница между
{ // ..МА 1 и 2 большая
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
Ops++;// Открытие только одного ордера
Opb=0;
if (VKO0<=Bid) {VP=VP*Koff;} // При прибыли предыдущего умножать на коэф
if (VKO0>Bid) {VP=VP*Koff1;}// При убытке предыдущего умножать на коэф1
}
if ((Opn_S==true)||(Opn_B==true)) // Если есть сигнал на открытие ордера
{// Вычисляем объем умножая на VP
if (AccountBalance()<50000) Vol=Opn_Lots*VP;
if (AccountBalance()>50000) Vol=2*Opn_Lots*VP;
}
Ich kann nicht herausfinden, wo der Fehler liegt, bitte um Rat. Es heißt "nicht genug Geld für Lts=1.#INF"
Das ist das Problem... Die Anzahl der Lose wächst ins Unendliche, d.h. die Erhöhung des Volumens wird eingeschleift, und per Code stellt sich heraus, dass es sich um eine einmalige Erhöhung handelt...
Danach, um es klar zu machen, siehe unten. und daher das gleiche mit Sell
if (Total==0 && Opn_B==true) // Открытых орд. нет
{ // критерий откр. BuyRefreshRates(); // Обновление данных
Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Миним. колич. лотов
Free =AccountFreeMargin(); // Свободн средства
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Стоимость 1 лота
Step =MarketInfo(Symb,MODE_LOTSTEP); // Шаг изменен размера
Lts=MathFloor(Vol); // Для открытия Alert ("Lts ", Lts);
if(Lts < Min_Lot) Lts=Min_Lot; // Не меньше минимальнif (Lts*One_Lot < Free) Alert(" Не хватает денег на ", Lts," лотов"); // Лот дороже свободн.
SL=Ask-StopLoss_Open*Point; // Вычисление SL откр.
TP=Ask+TakeProfit_Open*Point; // Вычисление TP откр.Alert("Попытка открыть Buy. Ожидание ответа..");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP); //Открытие Buyif (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Buy ",Ticket);
VKO0=Ask; Opn_B =false; KO++;
Alert ("Цена открытия =", VKO0);
}
if (Fun_Error(GetLastError())==1) // Обработка ошибокcontinue; // Повторная попытка
}
Ich kann keine Antwort auf die folgende Frage finden:
Wenn ein schwebender Auftrag ausgeführt wird, ist sein Typ immer noch derselbe wie der Typ des schwebenden Auftrags, oder wird er in OP_BUY oder OP_SELL geändert?
Das ist das Problem... Die Anzahl der Lose wächst ins Unendliche, d.h. die Erhöhung des Volumens wird eingeschleift, und per Code stellt sich heraus, dass es sich um eine einmalige Erhöhung handelt...
Danach, um es klar zu machen, siehe unten. und daher das gleiche mit Sell
Versuchen Sie
if (Fun_Error(GetLastError())==0) // Нет ошибкиbreak;
Wenn ein Fehler auftritt, wird einfach versucht, die Position bei einem neuen Tick erneut zu eröffnen. Übrigens wurde mir hier im Forum (S. 90-91) erklärt, dass es ratsam ist, den Operator && (und) in if nicht zu verwenden.
Weiß jemand, wie man die Anzahl der Pips in eine Währung umrechnen kann?
d.h. wenn der Gewinn in Währungseinheiten angegeben wird, dann sollten 50 Pips in Währungseinheiten umgerechnet werden... d.h. die Hebelwirkung sollte berücksichtigt werden...? 0_о
paladin80, das Problem ist nicht die Eröffnung einer Bestellung... es funktioniert gut... Ich habe diesen Teil überflogen, um deutlich zu machen, welche Variablen aus dem Beitrag vom 01.05.12 19:15 weiter verwendet wurden...
Das Problem ist folgendes (siehe unten): Es handelt sich um eine einmalige Ausführung, und aus irgendeinem Grund steigt Vol auf unendlich, also steigt auch Lts auf unendlich... Es ist nicht klar... bitte sehen Sie sich den fraglichen Beitrag an und sagen Sie mir, was falsch ist...
if ((Opn_S==true)||(Opn_B==true)) // Если есть сигнал на открытие ордера
{ // Вычисляем объем умножая на VPif (AccountBalance()<50000) Vol=Opn_Lots*VP;
if (AccountBalance()>50000) Vol=2*Opn_Lots*VP;
}
Und prüfen Sie, ob die Kaution ausreicht? https://docs.mql4.com/ru/constants/marketinfo
Und prüfen Sie das Los am Ausgang ?
Das ist das Problem... Die Anzahl der Lose wächst ins Unendliche, d.h. die Erhöhung des Volumens wird eingeschleift, und per Code stellt sich heraus, dass es sich um eine einmalige Erhöhung handelt...
Danach, um es klar zu machen, siehe unten. und daher das gleiche mit Sell
es sich um eine so genannte "einmalige Aktion" handelt?
Cap, es ist offensichtlich, dass es einen Kreislauf gibt.
Hallo!
Ich kann keine Antwort auf die folgende Frage finden:
Wenn ein schwebender Auftrag ausgeführt wird, ist sein Typ immer noch derselbe wie der Typ des schwebenden Auftrags, oder wird er in OP_BUY oder OP_SELL geändert?
Das ist das Problem... Die Anzahl der Lose wächst ins Unendliche, d.h. die Erhöhung des Volumens wird eingeschleift, und per Code stellt sich heraus, dass es sich um eine einmalige Erhöhung handelt...
Danach, um es klar zu machen, siehe unten. und daher das gleiche mit Sell
Wenn ein schwebender Auftrag ausgeführt wird, ist er dann noch derselbe wie der schwebende Auftrag, oder wird er in OP_BUY oder OP_SELL geändert?
Weiß jemand, wie man die Anzahl der Pips in eine Währung umrechnen kann?
d.h. wenn der Gewinn in Währungseinheiten angegeben wird, dann sollten 50 Pips in Währungseinheiten umgerechnet werden... d.h. die Hebelwirkung sollte berücksichtigt werden...? 0_о
paladin80, das Problem ist nicht die Eröffnung einer Bestellung... es funktioniert gut... Ich habe diesen Teil überflogen, um deutlich zu machen, welche Variablen aus dem Beitrag vom 01.05.12 19:15 weiter verwendet wurden...
Das Problem ist folgendes (siehe unten): Es handelt sich um eine einmalige Ausführung, und aus irgendeinem Grund steigt Vol auf unendlich, also steigt auch Lts auf unendlich... Es ist nicht klar... bitte sehen Sie sich den fraglichen Beitrag an und sagen Sie mir, was falsch ist...