necesito consejo de un profesional de la pesca de arrastre que controle dos posiciones independientemente una de la otra, ¿cómo se puede implementar?
La red de arrastre necesita distinguir posiciones en cualquier caso, por lo que podemos asignar magias diferentes a las órdenes y establecer dos redes de arrastre con magias diferentes.
¿O debemos incrustar el código de la red de arrastre en el EA? En ese caso, debemos seguir asignando números mágicos diferentes a las órdenes y duplicar la función de rastro en dos símbolos mágicos. EN MI OPINIÓN.
En cualquier caso, una red de arrastre necesita distinguir entre posiciones, por lo que es posible asignar magias diferentes a las órdenes y establecer dos redes de arrastre con magias diferentes.
¿Cómo se vería eso en el código?
¿hay una red de arrastre distinta para cada puesto?
¿Y si hay 6-8 puestos?
¿Es realmente imposible simplificar?
la red de arrastre está en la EA
¿Cómo se vería en el código? ¿Es posible escribir un nuevo magik para cada posición?
¿hay una red de arrastre distinta para cada puesto?
¿Y si hay 6-8 puestos?
¿No podría ser más sencillo?
Si hay muchos puestos, es difícil tener una búsqueda separada para cada uno, estoy de acuerdo. Si hay dos puestos a la vez, está bien en mi opinión.
Tal vez pueda ser más sencillo, pero ¿cuál debería ser la diferencia en el arrastre de los distintos pedidos?
¿Cómo se vería en el código? ¿Se escribiría un nuevo magik para cada posición?
¿Hay una red de arrastre distinta para cada puesto?
¿Y si hay 6-8 puestos?
¿es realmente imposible simplificar?
la red de arrastre está en la EA
Desactive la red de arrastre en EA y utilice la red de arrastre incorporada, hay una red de arrastre separada para cada posición.
no es divertido
//--------------------------------------------------------------- 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 --código de arrastre
Bueno, sólo puedo sugerir que a cada orden se le asigne un nuevo magik a su vez, y que se haga una función de tipo independiente para cada orden:
//--------------------------------------------------------------- 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 --
no es divertido
Barato y alegre.
Si cada posición tiene su propia red de arrastre, el valor de la variable de arrastre debe ser diferente para cada posición. Por lo tanto, para cada arrastre hay una variable, ¿cuántas posiciones como máximo tendrá?
Barato y barato.
Si cada posición tiene su propia red de arrastre, el valor de la variable de arrastre debe ser diferente para cada posición. Por lo tanto, para cada arrastre hay una variable, ¿cuántas posiciones como máximo tendrá?
máx. 8 posiciones
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
ajustar la red de arrastre, funciona bien para una posición
pero si hay más de un puesto, por ejemplo dos puestos de venta
cierra los dos al mismo tiempo
necesito una red de arrastre que funcione para cada posición por separado
cuando se opera manualmente es posible, es decir, una posición tiene un Sell StopLoss
la otra posición de venta tiene un StopLoss diferente
Google no ayudó