voidOnTick ()
{
// Получим значение индикатора
dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif (bCheckOrders() == true )
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif (bSignalBuy() == true )
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif (bSignalSell() == true )
vOrderOpenSell();
}
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfitif (GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*- 1 )
{
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
CloseOrder();
}
DrawLABEL( "lab_Take" , 1 , 5 , 0 ,Color(GetProfitFromStart()> 0 ,Lime,Red), StringConcatenate ( "Profit: " ,DoubleToStr(GetProfitFromStart(), 2 ),AC));
}
이것을 시도하고 OnTick()에서 bCheckOrders()를 제거하고 강조 표시된 것으로 설정하십시오.
voidOnTick ()
{
// Получим значение индикатора
dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если появился сигнал на покупку, то откроем ордер на покупкуif (bSignalBuy() == true )
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif (bSignalSell() == true )
vOrderOpenSell();
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfitif (GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*- 1 )
{
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
CloseOrder();
}
DrawLABEL( "lab_Take" , 1 , 5 , 0 ,Color(GetProfitFromStart()> 0 ,Lime,Red), StringConcatenate ( "Profit: " ,DoubleToStr(GetProfitFromStart(), 2 ),AC));
}
//+-----------------------------------------------------------------------------------------------+//| Функция открытия ордера на покупку |//+-----------------------------------------------------------------------------------------------+void vOrderOpenBuy()
{
// Если нет открытых ордеров, то входим в условиеif (bCheckOrders() == true )
{
// Тикет ордераint iOTi = 0 ;
iOTi = OrderSend ( Symbol (), OP_BUY, LOT(), Ask, Slippage, 0 , 0 , "" , Magic, 0 , clrNONE );
// Проверим открылся ли ордерif (iOTi > 0 )
// Есди да, то выставим уровни убытка и прибыли
vOrderModify(iOTi);
else// Если нет, то получим ошибку
vError( GetLastError ());
}
}
//+-----------------------------------------------------------------------------------------------+//| Функция открытия ордера на продажу |//+-----------------------------------------------------------------------------------------------+void vOrderOpenSell()
{
// Если нет открытых ордеров, то входим в условиеif (bCheckOrders() == true )
{
// Тикет ордера int iOTi = 0 ;
iOTi = OrderSend ( Symbol (), OP_SELL, LOT(), Bid, Slippage, 0 , 0 , "" , Magic, 0 , clrNONE );
// Проверим открылся ли ордерif (iOTi > 0 )
// Есди да, то выставим уровни убытка и прибыли
vOrderModify(iOTi);
else// Если нет, то получим ошибку
vError( GetLastError ());
}
}
중복 코드를 제거했습니다.
그게 무슨 뜻이야?
다른 TF에서 이러한 데이터를 계산할 수 있습니다.
클래스를 통해 구현한 사람이 있는지 궁금합니다.
지금은 수업의 논리를 파악하려고 노력하고 있습니다. 학습에 도움이 될 것입니다.
안녕하세요. 문제를 해결하는 데 도움이 됩니다. M15 양초에서 여러 거래가 연속으로 열립니다.
하나 이상의 트랜잭션을 열지 않아야 합니다. 고문의 논리는 이전 주문이 닫힐 때까지 다음 주문이 열리지 않지만 때로는 일련의 거래가 긴 촛불에서 열리는 방식으로 배열됩니다. 이 상황을 방지하려면 코드에 무엇을 추가해야 합니까?
코드 스니펫:
음... vOrderModify()의 iOTi에서는 항상 = 1이고 티켓은 없지만 OrderSend() 작업의 긍정적인 결과, 즉 값 "1"이 있습니다.
감사하다. 원래 코드는 내 것이 아니므로 불필요하게 변경하지 않습니다. 작동하고 작동합니다.
이것이 내 문제를 해결하는 데 어떻게 도움이 될까요?
안녕하세요. 문제를 해결하는 데 도움이 됩니다. M15 양초에서 여러 거래가 연속으로 열립니다.
하나 이상의 트랜잭션을 열지 않아야 합니다. 고문의 논리는 이전 주문이 닫힐 때까지 다음 주문이 열리지 않지만 때로는 일련의 거래가 긴 촛불에서 열리는 방식으로 배열됩니다. 이 상황을 방지하려면 코드에 무엇을 추가해야 합니까?
코드 스니펫:
저는 지표를 Expert Advisor에 통합한 경험을 공유할 수 있는 사람을 찾고 있습니다.
다른 TF에서 이러한 데이터를 계산할 수 있습니다.
클래스를 통해 구현한 사람이 있는지 궁금합니다.
지금은 수업의 논리를 파악하려고 노력하고 있습니다. 학습에 도움이 될 것입니다.
rates_total = Bars time[] = Time[] open[] = Open[] high[] = High[] low[] = Low[] close[] = Close[]
OnTick() 표시
감사하다. 원래 코드는 내 것이 아니므로 불필요하게 변경하지 않습니다. 작동하고 작동합니다.
이것이 내 문제를 해결하는 데 어떻게 도움이 될까요?
이것을 시도하고 OnTick()에서 bCheckOrders()를 제거하고 강조 표시된 것으로 설정하십시오.
아니요, 실수를 했습니다. OrderSend()는 티켓 또는 -1을 반환하므로 모든 것이 문제가 없습니다.
잘.
나는 미래를 위해 공부할 것이다