Brauche Rat von einem Schleppnetzprofi, der zwei Positionen unabhängig voneinander steuert, wie kann das umgesetzt werden?
Das Schleppnetz muss ohnehin zwischen den Positionen unterscheiden, also können wir den Aufträgen unterschiedliche Magie zuweisen und zwei Schleppnetze mit unterschiedlicher Magie einsetzen.
Oder sollten wir den Schleppnetzcode in den EA einbetten? In diesem Fall sollten wir den Aufträgen dennoch unterschiedliche magische Nummern zuweisen und die Funktion "Trail" für zwei magische Symbole duplizieren. IMHO.
In jedem Fall muss ein Schleppnetz zwischen verschiedenen Positionen unterscheiden, so dass es möglich ist, den Aufträgen unterschiedliche Magie zuzuweisen und zwei Schleppnetze mit unterschiedlicher Magie einzusetzen.
Wie würde das im Code aussehen?
Gibt es für jede Stelle ein eigenes Schleppnetz?
Was ist, wenn es 6-8 Stellen gibt?
Ist es wirklich unmöglich, zu vereinfachen?
das Schleppnetz ist in der EA
Wie würde das im Code aussehen? Ist es möglich, für jede Position eine neue Magie zu schreiben?
ein separates Schleppnetz für jede Position?
Was ist, wenn es 6-8 Stellen gibt?
Könnte es nicht einfacher sein?
Wenn es viele Stellen gibt, ist es schwierig, für jede Stelle einen separaten Suchlauf durchzuführen, da stimme ich zu. Wenn es jeweils zwei Positionen gibt, ist das meiner Meinung nach in Ordnung.
Vielleicht kann es einfacher sein, aber wie groß sollte der Unterschied im Schleppnetz verschiedener Aufträge sein?
Wie würde das im Code aussehen? Würde für jede Position ein neuer Zauber geschrieben werden?
Gibt es für jede Stelle ein eigenes Schleppnetz?
Und was ist, wenn es 6-8 Stellen gibt?
Ist es wirklich unmöglich, zu vereinfachen?
das Schleppnetz ist in der EA
Deaktivieren Sie das Schleppnetz in EA und verwenden Sie das eingebaute Schleppnetz, es gibt für jede Position ein eigenes Schleppnetz.
nicht lustig
//--------------------------------------------------------------- 1 -- // Функция модификации StopLoss всех ордеров указанного типа // Глобальные переменные: // Mas_Ord_New Массив ордеров последний известный // int TralingStop Значение TralingStop(количество пунктов) //--------------------------------------------------------------- 2 -- int Tral_Stop(int Tip) { int Ticket; // Номер ордера double Price, // Цена открытия рыночного ордера TS, // TralingStop (относит.знач.цены) SL, // Значение StopLoss ордера TP; // Значение TakeProfit ордера bool Modify; // Признак необходимости модифи. //--------------------------------------------------------------- 3 -- for(int i=1;i<=Mas_Ord_New[0][0];i++) // Цикл по всем ордерам { // Ищем ордера задан. типа if (Mas_Ord_New[i][6]!=Tip) // Если это не наш тип.. continue; //.. то переступим ордер Modify=false; // Пока не назначен к модифи Price =Mas_Ord_New[i][1]; // Цена открытия ордера SL =Mas_Ord_New[i][2]; // Значение StopLoss ордера TP =Mas_Ord_New[i][3]; // Значение TakeProft ордера Ticket=Mas_Ord_New[i][4]; // Номер ордера if (TralingStop<Level_new) // Если меньше допустимого.. TralingStop=Level_new; // .. то допустимый TS=TralingStop*Point; // То же в относит.знач.цены //--------------------------------------------------------- 4 -- switch(Tip) // Переход на тип ордера { case 0 : // Ордер Buy if (NormalizeDouble(SL,Digits)<// Если ниже желаемого.. NormalizeDouble(Bid-TS,Digits)) { // ..то модифицируем его: SL=Bid-TS; // Новый его StopLoss Modify=true; // Назначен к модифи. } break; // Выход из switch case 1 : // Ордер Sell if (NormalizeDouble(SL,Digits)>// Если выше желаемого.. NormalizeDouble(Ask+TS,Digits)|| NormalizeDouble(SL,Digits)==0)//.. или нулевой(!) { // ..то модифицируем его SL=Ask+TS; // Новый его StopLoss Modify=true; // Назначен к модифи. } } // Конец switch if (Modify==false) // Если его не надо модифи.. continue; // ..то идём по циклу дальше bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифицируем его! //--------------------------------------------------------- 5 -- if (Ans==false) // Не получилось :( { // Поинтересуемся ошибками: if(Errors(GetLastError())==false)// Если ошибка непреодолимая return; // .. то уходим. i--; // Понижение счётчика } } return; // Выход из пользов. функции } //--------------------------------------------------------------- 6 --Schleppnetzcode
Nun, ich kann nur vorschlagen, dass jedem Auftrag eine neue Magie zugewiesen wird und dass für jeden Auftrag eine eigene Typfunktion erstellt wird:
//--------------------------------------------------------------- 1 -- // Функция модификации StopLoss всех ордеров указанного типа // Глобальные переменные: // Mas_Ord_New Массив ордеров последний известный // int TralingStop_1 Значение TralingStop(количество пунктов) //--------------------------------------------------------------- 2 -- int Tral_Stop(int Tip) { int Ticket; // Номер ордера double Price, // Цена открытия рыночного ордера TS, // TralingStop (относит.знач.цены) SL, // Значение StopLoss ордера TP; // Значение TakeProfit ордера bool Modify; // Признак необходимости модифи. //--------------------------------------------------------------- 3 -- if(OrderMagicNumber() == magic_1){ for(int i=1;i<=Mas_Ord_New[0][0];i++) // Цикл по всем ордерам { // Ищем ордера задан. типа if (Mas_Ord_New[i][6]!=Tip) // Если это не наш тип.. continue; //.. то переступим ордер Modify=false; // Пока не назначен к модифи Price =Mas_Ord_New[i][1]; // Цена открытия ордера SL =Mas_Ord_New[i][2]; // Значение StopLoss ордера TP =Mas_Ord_New[i][3]; // Значение TakeProft ордера Ticket=Mas_Ord_New[i][4]; // Номер ордера if (TralingStop<Level_new) // Если меньше допустимого.. TralingStop=Level_new; // .. то допустимый TS=TralingStop*Point; // То же в относит.знач.цены //--------------------------------------------------------- 4 -- switch(Tip) // Переход на тип ордера { case 0 : // Ордер Buy if (NormalizeDouble(SL,Digits)<// Если ниже желаемого.. NormalizeDouble(Bid-TS,Digits)) { // ..то модифицируем его: SL=Bid-TS; // Новый его StopLoss Modify=true; // Назначен к модифи. } break; // Выход из switch case 1 : // Ордер Sell if (NormalizeDouble(SL,Digits)>// Если выше желаемого.. NormalizeDouble(Ask+TS,Digits)|| NormalizeDouble(SL,Digits)==0)//.. или нулевой(!) { // ..то модифицируем его SL=Ask+TS; // Новый его StopLoss Modify=true; // Назначен к модифи. } } // Конец switch if (Modify==false) // Если его не надо модифи.. continue; // ..то идём по циклу дальше bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифицируем его! //--------------------------------------------------------- 5 -- if (Ans==false) // Не получилось :( { // Поинтересуемся ошибками: if(Errors(GetLastError())==false)// Если ошибка непреодолимая return; // .. то уходим. i--; // Понижение счётчика } } return; // Выход из пользов. функции } } //--------------------------------------------------------------- 6 --
nicht lustig
Billig und fröhlich.
Wenn jede Position ihr eigenes Schleppnetz hat, sollte der Wert der Schleppnetzvariable für jede Position unterschiedlich sein. Daher gibt es für jedes Schleppnetz eine Variable: Wie viele Positionen werden Sie höchstens haben?
Billig und billig.
Wenn jede Position ihr eigenes Schleppnetz hat, dann sollte der Wert der Schleppnetzvariable für jede Position unterschiedlich sein. Daher gibt es für jedes Schleppnetz eine Variable: Wie viele Positionen werden Sie höchstens haben?
maximal 8 Positionen
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
das Schleppnetz einstellen, funktioniert gut für eine Position
aber wenn es mehr als eine Position gibt, zum Beispiel zwei Verkaufspositionen
sie schließt beide gleichzeitig
Ich benötige ein Schleppnetz, das für jede Position einzeln funktioniert.
beim manuellen Handel ist dies möglich, d.h. eine Position hat einen Sell StopLoss
die andere Verkaufsposition hat einen anderen StopLoss
Google hat nicht geholfen