int GetMagic(Order &order)
{
int magic = 0 ;
if (order.cmd == OP_SELLSTOP || order.cmd == OP_BUYSTOP)for ( int i = OrdersTotal (); i > 0 ; i --)
{
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP)
{
if (magic == OrderMagicNumber()) magic+= 1 ;
else magic= 0 ;
}
}
}
return (magic);
}
그것은 해냈 지만 (order.cmd == OP_SELLSTOP || OP_BUYSTOP) 문제가 해결되지 않았습니다. 하지만 모든 명령에 통과해야 합니다. 마법 자체는 생성 시 스톱오더에만 설정됩니다. 스톱 오더가 OrderType()에 의해 생성되는 것은 아직 존재하지 않기 때문에 이해가 불가능하며, 이를 위해 order.cmd에 오더 유형의 예비 입력이 제공된다. 그리고 여기에 두 개의 루프가 필요합니다. 하나는 다른 루프에 중첩되어 마법 변수의 한 번의 반복이 OrdersTotal()의 모든 주문의 마법으로 확인되도록 합니다. 다 구현했는데 무한루프만 뜨는데 이유를 모르겠네요...
Nerd Trader # : 그것은 트릭을 수행했습니다. if (order.cmd == OP_SELLSTOP || OP_BUYSTOP) 하지만 모든 명령에 통과해야 합니다. 마법 자체는 생성 시 스톱오더에만 설정됩니다. 스톱 오더가 OrderType()에 의해 생성되는 것은 아직 존재하지 않기 때문에 이해가 불가능하며, 이를 위해 order.cmd에 오더 유형의 예비 입력이 제공된다. 그리고 여기에 두 개의 루프가 필요합니다. 하나는 다른 루프에 중첩되어 마법 변수의 한 번의 반복이 OrdersTotal()의 모든 주문의 마법으로 확인되도록 합니다.
void OpenOrder( int db = - 1 ){
if (db == - 1 ){
Print ( "'db' должен иметь корректное значение" );
return ;
}
Order order;
//Если бид в границах ДБ (его хай/лоу) то инициализируем ордер для селстопа или байстопаif (Bid > db_last.low && Bid < db_last.hight){
if (db == BEAR) order.InitForSell(SELLSTOP);
if (db == BULL) order.InitForBuy(BUYSTOP);
}
...
if (order.is_init == true )
{
int order_send = OrderSend ( Symbol (), order.cmd, 0.01 , order.open_price, 10 ,
order.sl_price, order.tp_price, "" , GetMagic(order) , 0 , order.arrow_color);
if (order_send == - 1 ){
Print (order.error_text, " | " , GetLastError (), " db_last.third " ,db_last.third,
" | db_last.size_open_to_low " ,db_last.size_open_to_low, " | order.sl_price: " ,
order.sl_price, " | order.cmd " ,order.cmd);
ResetLastError ();
return ;
}
}
}
...
int GetMagic(Order &order)
{
int magic = 0 ;
//Если должен быть открыт стопордер и если есть уже открытые или отложенные //ордера, то возможно некоторые с маджиком, это надо проверить и сгенерировать //для нашего ордера уникальный маджик и отправить его на запись в массивif (order.cmd == OP_SELLSTOP || OP_BUYSTOP)
if ( OrdersTotal () >= 1 )
for (;;){
magic++;
for ( int i = OrdersTotal (); i > 0 ; i --)
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) != false )
if (magic != OrderMagicNumber())
return magic;
}
//Если нет открытых или отложенных ордеров то увеличиваем значение //маджика, чтобы он равнялся единице и отправляем на запись в массивelseif ( OrdersTotal () == 0 )
return (magic + 1 );
return magic;
}
거기, 해설에서 마술사는 쓰기 위해 배열로 보내지는데, 이것이 오해의 소지가 없도록 하고 마술사는 retorn에 의해 돌아오는 동안 쓰여집니다.
이것은 일종의 농담입니까?
흑백이 있습니다(;;)
글쎄, 네, 마법이 주문의 마법과 같지 않을 때만 탈출구가 제공됩니다.
이 시도
주문 그리드가 있으면 어떻게 되나요???
아무도 마법 주문과 금융 상품에 대한 주문 그리드의 모든 스왑 합계를 계산하는 기능을 가지고 있지 않습니다.
도와 주셔서 감사합니다!!!
왜 그것을 원하십니까?
그리드 수명이 긴 대규모 주문 그리드를 닫을 때 스왑 주문은 이익을 먹고 결과를 크게 왜곡합니다.
이 기능이 스왑 손실을 보상하기를 원합니다.
그리드 수명이 긴 대규모 주문 그리드를 닫을 때 스왑 주문은 이익을 먹고 결과를 크게 왜곡합니다.
이 기능이 스왑 손실을 보상하기를 원합니다.
이 시도
하지만 모든 명령에 통과해야 합니다. 마법 자체는 생성 시 스톱오더에만 설정됩니다. 스톱 오더가 OrderType()에 의해 생성되는 것은 아직 존재하지 않기 때문에 이해가 불가능하며, 이를 위해 order.cmd에 오더 유형의 예비 입력이 제공된다. 그리고 여기에 두 개의 루프가 필요합니다. 하나는 다른 루프에 중첩되어 마법 변수의 한 번의 반복이 OrdersTotal()의 모든 주문의 마법으로 확인되도록 합니다. 다 구현했는데 무한루프만 뜨는데 이유를 모르겠네요...
그리드가 이익 또는 손익분기 가격으로 마감됩니까?
네, 일정 수준의 드로다운에서 이익이 0으로 재설정되고 무손실 스왑으로 인해 추한 손실이 발생합니다.
그것은 트릭을 수행했습니다. if (order.cmd == OP_SELLSTOP || OP_BUYSTOP)
하지만 모든 명령에 통과해야 합니다. 마법 자체는 생성 시 스톱오더에만 설정됩니다. 스톱 오더가 OrderType()에 의해 생성되는 것은 아직 존재하지 않기 때문에 이해가 불가능하며, 이를 위해 order.cmd에 오더 유형의 예비 입력이 제공된다. 그리고 여기에 두 개의 루프가 필요합니다. 하나는 다른 루프에 중첩되어 마법 변수의 한 번의 반복이 OrdersTotal()의 모든 주문의 마법으로 확인되도록 합니다.
네, 일정 수준의 드로다운에서 이익이 0으로 재설정되고 무손실 스왑으로 인해 추한 손실이 발생합니다.