다중 통화 Expert Advisor에서 오픈 포지션이 트리거될 때 카운터 이동에 대해 보류 중인 주문 을 마감해야 합니다.
이제 이익으로 마감할 때 모든 보류 중인 주문이 모든 통화로 마감됩니다.
통화 쌍에 연결된 보류 중인 주문만 마감되고 나머지는 배치된 상태로 유지되도록 코드를 변경하는 방법은 무엇입니까?
이 코드에서 무엇을 변경해야 합니까?:
이 코드의 Mn은 BUY_STOP 또는 SELL_STOP 보류 주문의 매직 넘버입니다.
이익을 취하여 오픈 포지션을 청산할 때 이 마법으로 주문한 주문이 유지되고 이론상 삭제 명령이 실행되는 것과 같은 논리입니다.
이것은 각 쌍을 테스트할 때 작동합니다. 그러나 다른 통화로 작업하는 경우 모든 쌍에 대한 모든 주문이 삭제됩니다.
할 수 있는 사람을 도와주세요.
아무도이 문제를 귀찮게해서는 안된다는 것을 이해하지만 누군가가 기성품 템플릿을 가지고 있습니까?
나는 매우 감사하게 될 것입니다.
거기서 무엇을 했는지 이해하려면 코드를 편집기에 복사하고 일반적인 스타일 지정(Ctrl+<)을 수행해야 했습니다.
그래서: 나는 거기에 무엇이 쌓여 있는지 코드에 주석을 달았습니다.
//+------------------------------------------------------------------+if (OrderMagicNumber()==Mn) // а ордер где-то был выбран ранее?
{
operation= 0 ; // неиспользуемая переменная
{ // лишняя скобкаfor ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
OrderSelect (i, SELECT_BY_POS); // нет проверки на результат выделения ордера в списке, и если ордер не выбран, то всё последующее вызовет ошибкиint type = OrderType();
bool result = false ;
switch (type)
{ // К СВЕДЕНИЮ - ВСЕ ОПЕРАТОРЫ break ЗАКОММЕНТИРОВАНЫ, А ЗНАЧИТ - ВСЕ СТРОКИ КОДА ОПЕРАТОРА switch ВЫПОЛНЯЮТСЯ ВСЕГДАcase OP_BUYSTOP : // Если выбран отложенный BuyStop, то пытаемся его закрыть как позицию, что вызовет ошибку
result = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5 , Red); //break;case OP_SELLSTOP : // Если выбран отложенный SellStop, то пытаемся его закрыть как позицию, что вызовет ошибку
result = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5 , Red); //break;// Независимо от типа выбранного ордера (отложенный или позиция) удаляем его как отложенный, что для позиции вызовет ошибку
result = OrderDelete(OrderTicket()); //break;
}
}
} // лишняя скобка
}
//+------------------------------------------------------------------+
결과적으로 코드는 이 작업을 수행합니다. 즉, 다음 코드와 동일합니다.
//+------------------------------------------------------------------+if (OrderMagicNumber()==Mn) // а ордер где-то был выбран ранее?
{
bool result= false ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if (! OrderSelect (i, SELECT_BY_POS)) {}
result = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5 , clrRed );
result = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5 , clrRed );
result = OrderDelete(OrderTicket());
}
}
//+------------------------------------------------------------------+
거기서 무엇을 했는지 이해하려면 코드를 편집기에 복사하고 일반적인 스타일 지정(Ctrl+<)을 수행해야 했습니다.
그래서: 나는 거기에 무엇이 쌓여 있는지 코드에 주석을 달았습니다.
결과적으로 코드는 이 작업을 수행합니다. 즉, 다음 코드와 동일합니다.
이제 물어보십시오. 그에게서 무엇을 얻고 싶습니까?
확인.
if (OrderMagicNumber()==Mn) // а ордер где-то был выбран ранее?
바로 여기에:
externint mn; //магический номер открытой позицииint Mn= 10 *mn; //магический номер отложенного ордераint TimFr1= 72 ,TimFr2= 24 ,TimFr3= 24 ;
int start()
{ if ( Symbol ()== "EURUSD" )mn= 1 ; if ( Symbol ()== "GBPUSD" )mn= 2 ; if ( Symbol ()== "USDCHF" )mn= 3 ; if ( Symbol ()== "USDJPY" )mn= 4 ;
if ( Symbol ()== "USDCAD" )mn= 5 ; if ( Symbol ()== "EURGBP" )mn= 6 ; if ( Symbol ()== "AUDUSD" )mn= 7 ; if ( Symbol ()== "NZDUSD" )mn= 8 ;
if ( Symbol ()== "EURJPY" )mn= 9 ; if ( Symbol ()== "EURCHF" )mn= 10 ;
포지션(OP_BUY 또는 OP_SELL)을 열 때 보류 주문 (OP_SELLSTOP 및 OP_BUYSTOP)이 각각 동시에 배치됩니다.
이익실현으로 오픈 포지션을 청산할 때 해당 보류 주문은 취소되어야 합니다. 이 알고리즘은 모든 통화 쌍에 있습니다.
구조 또는다차원 배열 을 만들고 필요한 차원을 따라 실행하도록 합니다. 기준이 충족되면 하나의 열(각 열은 자체 타임프레임을 담당함)으로 작업하고 그렇지 않은 경우 다른 열로 작업하면 됩니다. 프로그램 자체는 한 번에 모든 시간대에 액세스할 수 있으므로 작성하는 것이 가능하지만 구현이 매우 방대하고 매우 광범위하기 때문에 이러한 작업의 양은 포럼에 표시되지 않습니다.
typedefdouble (*CenBr)( string , int , int );CenBr cn_br[ 4 ]; //глобально//В Ините пытюсь сохранить указатель на функцию iOpen и ничего не выходит
cn_br[ 0 ]= iOpen ;
안녕하세요.
다중 통화 Expert Advisor에서 오픈 포지션이 트리거될 때 카운터 이동에 대해 보류 중인 주문 을 마감해야 합니다.
이제 이익으로 마감할 때 모든 보류 중인 주문이 모든 통화로 마감됩니다.
통화 쌍에 연결된 보류 중인 주문만 마감되고 나머지는 배치된 상태로 유지되도록 코드를 변경하는 방법은 무엇입니까?
이 코드에서 무엇을 변경해야 합니까?:
이 코드의 Mn은 BUY_STOP 또는 SELL_STOP 보류 주문의 매직 넘버입니다.
이익을 취하여 오픈 포지션을 청산할 때 이 마법으로 주문한 주문이 유지되고 이론상 삭제 명령이 실행되는 것과 같은 논리입니다.
이것은 각 쌍을 테스트할 때 작동합니다. 그러나 다른 통화로 작업하는 경우 모든 쌍에 대한 모든 주문이 삭제됩니다.
할 수 있는 사람을 도와주세요.
아무도이 문제를 귀찮게해서는 안된다는 것을 이해하지만 누군가가 기성품 템플릿을 가지고 있습니까?
나는 매우 감사하게 될 것입니다.
거기서 무엇을 했는지 이해하려면 코드를 편집기에 복사하고 일반적인 스타일 지정(Ctrl+<)을 수행해야 했습니다.
그래서: 나는 거기에 무엇이 쌓여 있는지 코드에 주석을 달았습니다.
결과적으로 코드는 이 작업을 수행합니다. 즉, 다음 코드와 동일합니다.
이제 물어보십시오. 그에게서 무엇을 얻고 싶습니까?
거기서 무엇을 했는지 이해하려면 코드를 편집기에 복사하고 일반적인 스타일 지정(Ctrl+<)을 수행해야 했습니다.
그래서: 나는 거기에 무엇이 쌓여 있는지 코드에 주석을 달았습니다.
결과적으로 코드는 이 작업을 수행합니다. 즉, 다음 코드와 동일합니다.
이제 물어보십시오. 그에게서 무엇을 얻고 싶습니까?
확인.
바로 여기에:
포지션(OP_BUY 또는 OP_SELL)을 열 때 보류 주문 (OP_SELLSTOP 및 OP_BUYSTOP)이 각각 동시에 배치됩니다.
이익실현으로 오픈 포지션을 청산할 때 해당 보류 주문은 취소되어야 합니다. 이 알고리즘은 모든 통화 쌍에 있습니다.
동시에 다른 통화로 된 다른 보류 주문은 남아 있어야 합니다.
모두에게 좋은 하루!
표시기 MTF_RSI 스위치가 있습니다.
말해봐, 차트 전환시 TimeFrame의 자동 변경을 어떻게 든 설정할 수 있습니까?
뭔가
모두에게 좋은 하루!
표시기 MTF_RSI 스위치가 있습니다.
말해봐, 차트 전환시 TimeFrame의 자동 변경을 어떻게 든 설정할 수 있습니까?
뭔가
구조 또는다차원 배열 을 만들고 필요한 차원을 따라 실행하도록 합니다. 기준이 충족되면 하나의 열(각 열은 자체 타임프레임을 담당함)으로 작업하고 그렇지 않은 경우 다른 열로 작업하면 됩니다. 프로그램 자체는 한 번에 모든 시간대에 액세스할 수 있으므로 작성하는 것이 가능하지만 구현이 매우 방대하고 매우 광범위하기 때문에 이러한 작업의 양은 포럼에 표시되지 않습니다.
구조체 또는 다차원 배열 생성
고맙습니다.
이 코드가 실행되지 않는 이유는 무엇입니까?
간단한 기능으로 작동하지만 몇 가지 문제가 있습니다.
고맙습니다.
나와 대화하고 있니?
네. 모든 주기와 모든 기능의 모든 세부 사항에 대해 시간 프레임을 가지고 놀아야 합니다. 그렇기 때문에다차원 배열 을 사용하는 것이 좋습니다.
네. 모든 주기와 모든 기능의 모든 세부 사항에 대해 시간 프레임을 가지고 놀아야 합니다. 그렇기 때문에 다차원 배열 을 사용하는 것이 좋습니다.
이 질문은 더 쉽게 해결할 수 있습니다.