좋은 저녁이에요. 조언자의 도움을 부탁드립니다. 명확성을 위해 그림에 모든 것을 묘사하려고했습니다. NEXT 막대의 가격이 "Dodge"의 최대값보다 높을 때 ''Dodge''가 형성된다고 가정해 보겠습니다. - I buy, T/P, 내가 15포인트를 가져갔고 같은 막대의 가격이 간다고 가정해 보겠습니다. up 및 T/P 15 포인트의 주문(Buy_2)이 다시 열리지만 Dodge 이후 첫 번째 막대에서 이 두 번째 오프닝 (Buy_2) 이 필요하지 않습니다. 이 오해를 제거하는 방법???
전략의 본질: 확률적 신호(5,14,3)에 진입하고 다른 기간(5,3,3)이 있는 확률론적 신호에서도 종료합니다. 그래서 역 신호가 아닌 스토캐스틱에서 출구를 만드는 방법을 이해할 수 없습니다. 문제가 있고 해결 방법을 모르겠습니다. 설명하려고 합니다. 그래서 내가 게시 한 코드에는 2 가지 기능이 있습니다.
//+------------------------------------------------------------------+//| подготовить массив тикетов для закрытия |//+------------------------------------------------------------------+void PrepareTicketsToClose( int signal, bool Revers, int & ticketsClose[][ 2 ], double & lots[], double arrayTickets[][ 9 ])
{
int size= ArrayRange (arrayTickets, 0 );
//----if (size== 0 ) return ;
int i,type,ticket,closeSize;
for (i= 0 ;i<size;i++)
{
type=arrayTickets[i][ 1 ];
// если тип ордера не рыночный, то пропускаемif (type>OP_SELL) continue ;
if (Revers) // перевернем тип рыночного ордера
{
if (type==OP_BUY) type=OP_SELL; else type=OP_BUY;
}
// тут решаем для каждого открытого ордера его судьбу// оставить в рынке или добавить в массив на закрытиеif (type==OP_BUY)
{
//// код разрешающий оставить покупку// как примерif (signal==OP_BUY) continue ;
}
if (type==OP_SELL)
{
//// код разрешающий оставить продажу// как примерif (signal==OP_SELL) continue ;
}
closeSize= ArrayRange (ticketsClose, 0 );
ArrayResize (ticketsClose,closeSize+ 1 );
ArrayResize (lots,closeSize+ 1 );
ticketsClose[closeSize][ 0 ] = arrayTickets[i][ 0 ]; // # тикета
ticketsClose[closeSize][ 1 ] = arrayTickets[i][ 1 ]; // тип ордера// здесь укажем сколько лотов нужно закрыть
lots[closeSize] = arrayTickets[i][ 2 ]; // закрываемый объем// можно закрывать частично, тогда нужно переписать строку сверху
}
//----return ;
}
//+------------------------------------------------------------------+//| Закрывает ордера с указанными тикетами |//+------------------------------------------------------------------+void CloseMarketOrders( int ticketsArray[][ 2 ], double lotsArray[])
{
//----int i,size= ArrayRange (ticketsArray, 0 );
if (size== 0 ) return ;
int ticket,type;
double lots;
bool res;
int total= OrdersTotal ();
for (i= 0 ;i<size;i++)
{
ticket = ticketsArray[i][ 0 ];
type = ticketsArray[i][ 1 ];
lots = lotsArray[i];
RefreshRates (); // на всякий случай обновим сведения о рыночном окружении// блок закрытия покупокif (type==OP_BUY)
{
res = OrderClose (ticket,lots,Bid,Slippage, Orange );
if (!res)
{
Print ( "Не удалось закрыть ордер в покупку #" ,ticket, "! Ошибка №" , GetLastError ());
// дальнейшая обработка ошибки, написать самостоятельно
}
}
// блок закрытия продажif (type==OP_SELL)
{
res = OrderClose (ticket,lots,Ask,Slippage, Orange );
if (!res)
{
Print ( "Не удалось закрыть ордер в продажу #" ,ticket, "! Ошибка №" , GetLastError ());
// дальнейшая обработка ошибки, написать самостоятельно
}
}
}
//----return ;
}
void PrepareTicketsToClose(int signal, bool Revers, int & ticketClose[][2], double & lott[],double arrayTickets[][9]) 함수에서 주문을 떠나기로 결정한 후 조건을 설정해야 합니다. 닫거나... 조건설정을 해봤는데 안되네요... 아마도 누군가가 살펴보고 이러한 기능에 오류가 있거나 내가 망쳤는지 보여줄 것입니다 ....
좋은 저녁이에요. 조언자의 도움을 부탁드립니다. 명확성을 위해 그림에 모든 것을 묘사하려고했습니다. NEXT 막대의 가격이 "Dodge"의 최대값보다 높을 때 ''Dodge''가 형성된다고 가정해 보겠습니다. - I buy, T/P, 내가 15포인트를 가져갔고 같은 막대의 가격이 간다고 가정해 보겠습니다. up 및 T/P 15 포인트의 주문(Buy_2)이 다시 열리지 만 Dodge 이후 첫 번째 막대에서 이 두 번째 오프닝 (Buy_2) 이 필요하지 않습니다. 이 오해를 제거하는 방법???
친애하는 전문가와 단순히 지식이 풍부합니다!
나는 절합니다 - BB 표시기가 내가 이해할 수 없는 신호를 보냅니다("빨간색-녹색-빨간색"이 아닙니다!). 더 정확하게 말하면 다음과 같이 호출합니다.
bolup = iBands(Symbol(), 0, 24, 0, 2, 0, 1, 1);
굵게 = iBands(Symbol(), 0, 24, 0, 2, 0, 2, 1);
bolmd = (bolup + 굵게) / 2;
Print("밴드 상단 = ", bolup);
Print("아래 밴드 = ", 굵게);
Print("밴드 미디어 = ", bolmd);
결과적으로 3개의 변수 모두 동일한 값을 제공합니다. >8-O
한 쌍의 유로, TF - H1. 어떤 아이디어???
미리 감사드립니다...
명확성을 위해 그림에 있는 모든 것을 묘사하려고 했습니다.
친애하는 전문가와 단순히 지식이 풍부합니다!
나는 절합니다 - BB 표시기가 내가 이해할 수 없는 신호를 보냅니다("빨간색-녹색-빨간색"이 아닙니다!). 더 정확하게 말하면 다음과 같이 호출합니다.
bolup = iBands(Symbol(), 0, 24, 0 , 2, 0, 1, 1);
굵게 = iBands(Symbol(), 0, 24, 0 , 2, 0, 2, 1);
bolmd = (bolup + 굵게) / 2;
Print("밴드 상단 = ", bolup);
Print("아래 밴드 = ", 굵게);
Print("밴드 미디어 = ", bolmd);
결과적으로 3개의 변수 모두 동일한 값을 제공합니다. >8-O
한 쌍의 유로, TF - H1. 어떤 아이디어???
미리 감사드립니다...
문제가 있고 해결 방법을 모르겠습니다. 설명하려고 합니다.
그래서 내가 게시 한 코드에는 2 가지 기능이 있습니다.
void PrepareTicketsToClose(int signal, bool Revers, int & ticketClose[][2], double & lott[],double arrayTickets[][9]) 함수에서 주문을 떠나기로 결정한 후 조건을 설정해야 합니다. 닫거나...
조건설정을 해봤는데 안되네요...
아마도 누군가가 살펴보고 이러한 기능에 오류가 있거나 내가 망쳤는지 보여줄 것입니다 ....
테스터에서는 필요하지 않지만 데모나 실제 테스터에서는 바쁜 거래 흐름에 대한 메시지를 받게 됩니다.
안녕하세요. 시스템에는 BUY 및 SELL에 대한 세 가지 진입점이 있습니다. 그러나 신호가 들어오면 신호가 존재하는 한 매 틱마다 포지션이 열립니다. 어딘가에 플래그에 버그가 있습니다. 이해를 도와주세요.
안녕하세요. 시스템에는 BUY 및 SELL에 대한 세 가지 진입점이 있습니다. 그러나 신호가 들어오면 신호가 존재하는 한 매 틱마다 포지션이 열립니다. 어딘가에 플래그에 버그가 있습니다. 이해를 도와주세요.
OrdersTotal ()은 이미 열려 있는 위치의 수를 반환합니다. 도움을 받아 이미 열린 포지션이 있는지 여부를 확인할 수 있습니다.