precisam de conselhos de um profissional de arrasto que controla duas posições independentemente uma da outra, como pode ser implementado?
A rede de arrasto precisa distinguir posições de qualquer forma, para que possamos atribuir diferentes magias aos pedidos e definir duas redes de arrasto com magias diferentes.
Ou devemos incorporar o código da rede de arrasto na EA? Nesse caso, devemos ainda atribuir números mágicos diferentes às ordens e duplicar a função de trilha em dois símbolos mágicos. IMHO.
Em qualquer caso, uma rede de arrasto precisa distinguir entre posições, de modo que é possível atribuir diferentes magias às ordens e definir duas redes de arrasto com magias diferentes.
Como ficaria isso no código?
existe uma rede de arrasto separada para cada posição?
E se houver de 6 a 8 posições?
É realmente impossível simplificar?
a rede de arrasto está na EA
Como ficaria no código? É possível escrever um novo magik para cada posição?
uma rede de arrasto separada para cada posição?
E se houver de 6 a 8 posições?
Não poderia ser mais simples?
Se há muitas posições, é difícil ter uma rede de arrasto separada para cada uma, eu concordo. Se houver duas posições de cada vez, tudo bem, na minha opinião.
Talvez possa ser mais simples, mas qual deveria ser a diferença no arrasto de diferentes ordens?
como ficaria no código? seria escrito um novo magik para cada posição?
Existe uma rede de arrasto separada para cada posição?
E se houver de 6 a 8 posições?
é realmente impossível simplificar?
a rede de arrasto está na EA
Desativar a rede de arrasto na EA e usar a rede de arrasto integrada, há uma rede de arrasto separada para cada posição.
não tem graça
//--------------------------------------------------------------- 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 da rede de arrasto
Bem, só posso sugerir que a cada pedido seja atribuído um novo magik por sua vez, e que uma função de tipo separada seja feita para cada pedido:
//--------------------------------------------------------------- 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 --
não tem graça
Barato e alegre.
Se cada posição tem sua própria rede de arrasto, o valor da variável rede de arrasto deve ser diferente para cada posição. Portanto, para cada rede de arrasto há uma variável, quantas posições, no máximo, você terá?
Barato e barato.
Se cada posição tem sua própria rede de arrasto, então o valor da variável rede de arrasto deve ser diferente para cada posição. Portanto, para cada rede de arrasto há uma variável, quantas posições, no máximo, você terá?
máximo 8 posições
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Preparar a rede de arrasto, funciona bem para uma posição
mas se houver mais de uma posição, por exemplo duas posições de Venda
fecha os dois ao mesmo tempo
eu preciso de uma rede de arrasto para trabalhar para cada posição separadamente
quando a negociação manual é possível, ou seja, uma posição tem um Sell StopLoss
a outra posição de Sell tem um StopLoss diferente
O Google não ajudou