EA의 시간/시계에 대해 조사하기 시작한 이후로. 저자가 표시기에 start() JUST를 사용하는 것을 보았습니다. 내 EA에서 OnTimer() 및 OnTick()을 사용하지만 start()를 사용하고 싶지 않습니다. 따라서 시간 및 시계 기능에 어떤 특수 기능 이 더 나은지 확인/배울 필요가 있습니까?
나는 10시간 후에 이 문제에 대해 계속 연구할 것입니다. (참고: Mql5.com Codebase 페이지에서 이미 몇 가지 시간 및 시계 표시기를 찾았지만 복사하여 붙여넣는 것을 좋아하지 않습니다.)
EA의 시간/시계에 대해 조사하기 시작한 이후로. 저자가 표시기에 start() JUST를 사용하는 것을 보았습니다. 내 EA에서 OnTimer() 및 OnTick()을 사용하지만 start()를 사용하고 싶지 않습니다. 따라서 시간 및 시계 기능에 어떤 특수 기능 이 더 나은지 확인/배울 필요가 있습니까?
나는 10시간 후에 이 문제에 대해 계속 연구할 것입니다. (참고: Mql5.com Codebase 페이지에서 이미 몇 가지 시간 및 시계 표시기를 찾았지만 복사하여 붙여넣는 것을 좋아하지 않습니다.)
좋은 의견, 포럼 공유, 링크 및 다른 것이 저에게 더 좋을 것입니다.
미리 감사드립니다.
OnTimer()를 사용합니다.
TimeLocal()을 사용하면 모양이 더 좋아지지만 브로커 시간대와 동기화되지 않습니다.
TimeCurrent()를 사용하면 브로커와 동기화되지만 틱이 도착하는 시점에 따라 지연되고 "점프" 초가 될 수 있습니다. 이 예에서는 문제를 강조 표시합니다.
OnTimer()를 사용합니다. TimeLocal()을 사용하면 모양이 더 좋아지지만 브로커 시간대와 동기화되지 않습니다. TimeCurrent()를 사용하면 브로커와 동기화되지만 틱이 도착하는 시점에 따라 지연되고 "점프" 초가 될 수 있습니다. 이 예에서는 문제를 강조 표시합니다.
(이 댓글을 쓰기 전에 해결책을 찾기 위해 열심히 조사한 것 같아요. 예, 비슷한 스레드를 찾았지만 이 문제에 대한 해결책을 찾지 못했습니다. )
저는 손절매를 핍으로 표시하는 판매 주문 에 대해 아래 코드를 사용합니다. 손절매가 양수로 바뀔 때까지 올바른 값을 보여줍니다.
따라서이 문제를 해결하기 위해 어떻게 시도 할 수 있는지 전혀 모릅니다.
어떤 좋은 의견이라도 부탁드립니다.
(참고: 지금은 Trailing Stop을 사용하지 않습니다. 또한 OrderSend() 또는 이와 유사한 것이 아닌 정보 업데이트를 위한 코드도 아래에 있습니다. )
{
riskinpips=change_to_pips( OrderStopLoss ()- OrderOpenPrice ());
}
Print ( "stop loss in pips" , DoubleToString (riskinpips, 2 ));
미리 감사드립니다.
(참고: 내 문제를 설명하기 위해 사진 편집 프로그램에서 만든 스크린샷 레이블)가장 높은 값에서 가장 낮은 값을 뺀 값이 결과를 제공하므로 어느 것이 가장 높은지 확인할 수 있습니다.
{
// orderstoploss - orderopenprice
}
else if ( OrderOpenPrice ()> OrderStopLoss ())
{
// orderopenprice - orderstoploss
}
가장 높은 값에서 가장 낮은 값을 뺀 값이 결과를 제공하므로 어느 것이 가장 높은지 확인할 수 있습니다.
{
// orderstoploss - orderopenprice
}
else if ( OrderOpenPrice ()> OrderStopLoss ())
{
// orderopenprice - orderstoploss
}
나는 아무렇지 않다는 듯이 웃기만 한다. 이것이 나를 도울 수 있다고 생각합니다. 곧 나는 그것을 시도 할 것입니다.
고마워요 Mr. Marco
#이익통화계산 - 마감
그것은 지금까지 완벽하게 작동합니다.
@Marco vd Heijden 과 @whroeder1 에 감사드립니다.
#시간 - 오픈
EA의 시간/시계에 대해 조사하기 시작한 이후로. 저자가 표시기에 start() JUST를 사용하는 것을 보았습니다.
내 EA에서 OnTimer() 및 OnTick()을 사용하지만 start()를 사용하고 싶지 않습니다.
따라서 시간 및 시계 기능에 어떤 특수 기능 이 더 나은지 확인/배울 필요가 있습니까?
나는 10시간 후에 이 문제에 대해 계속 연구할 것입니다.
(참고: Mql5.com Codebase 페이지에서 이미 몇 가지 시간 및 시계 표시기를 찾았지만 복사하여 붙여넣는 것을 좋아하지 않습니다.)
좋은 의견, 포럼 공유, 링크 및 다른 것이 저에게 더 좋을 것입니다.
미리 감사드립니다.
시작 기능은 스크립트 에서만 OnStart 로 대체됩니다. Expert Advisors 및 표시기에서는 각각 OnTick 및 OnCalculate 로 이름을 변경해야 합니다. mql5 프로그램 작업 중에 실행될 코드는 다음 세 가지 함수에 있어야 합니다.
참조: https://www.mql5.com/en/docs/migration
시작 기능은 스크립트 에서만 OnStart 로 대체됩니다. Expert Advisors 및 표시기에서는 각각 OnTick 및 OnCalculate 로 이름을 변경해야 합니다. mql5 프로그램 작업 중에 실행될 코드는 다음 세 가지 함수에 있어야 합니다.
#시간 - 오픈
EA의 시간/시계에 대해 조사하기 시작한 이후로. 저자가 표시기에 start() JUST를 사용하는 것을 보았습니다.
내 EA에서 OnTimer() 및 OnTick()을 사용하지만 start()를 사용하고 싶지 않습니다.
따라서 시간 및 시계 기능에 어떤 특수 기능 이 더 나은지 확인/배울 필요가 있습니까?
나는 10시간 후에 이 문제에 대해 계속 연구할 것입니다.
(참고: Mql5.com Codebase 페이지에서 이미 몇 가지 시간 및 시계 표시기를 찾았지만 복사하여 붙여넣는 것을 좋아하지 않습니다.)
좋은 의견, 포럼 공유, 링크 및 다른 것이 저에게 더 좋을 것입니다.
미리 감사드립니다.
OnTimer()를 사용합니다.
TimeLocal()을 사용하면 모양이 더 좋아지지만 브로커 시간대와 동기화되지 않습니다.
TimeCurrent()를 사용하면 브로커와 동기화되지만 틱이 도착하는 시점에 따라 지연되고 "점프" 초가 될 수 있습니다. 이 예에서는 문제를 강조 표시합니다.
int OnInit ()
{
EventSetTimer ( 1 );
return ( INIT_SUCCEEDED );
}
void OnTimer ()
{
Comment ( StringFormat ( "%s - Local\n%s - Broker" , TimeToString ( TimeLocal (), TIME_SECONDS ), TimeToString ( TimeCurrent (), TIME_SECONDS )));
}
#시간 - 휴무
OnTimer()를 사용합니다.
TimeLocal()을 사용하면 모양이 더 좋아지지만 브로커 시간대와 동기화되지 않습니다.
TimeCurrent()를 사용하면 브로커와 동기화되지만 틱이 도착하는 시점에 따라 지연되고 "점프" 초가 될 수 있습니다. 이 예에서는 문제를 강조 표시합니다.
int OnInit ()
{
EventSetTimer ( 1 );
return ( INIT_SUCCEEDED );
}
void OnTimer ()
{
Comment ( StringFormat ( "%s - Local\n%s - Broker" , TimeToString ( TimeLocal (), TIME_SECONDS ), TimeToString ( TimeCurrent (), TIME_SECONDS )));
}
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
전문 고문 - 기타 질문
정직한_나브 , 2016.11.30 01:28
IMHO 모든 로트 계산을 OnChartEvent()와 _lotCalc() 간에 분할하는 것보다 함께 유지하는 것이 좋습니다. 최소/최대/단계를 확인하고 증가/감소를 수행하는 하나의 기능입니다.
const long & lparam , // Parameter of type long event
const double & dparam , // Parameter of type double event
const string & sparam // Parameter of type string events
)
{
_lotCalc();
//-------Process Button---------------------------------------------------------|
if ( sparam == _btnLotMinus )
{
ObjectSetInteger ( 0 , sparam , OBJPROP_STATE , false );
_lotSize = fmax (_lotMin, _lotSize-_lotStep);
_calcUpdade( CALC_CHANGE_LOT );
printf ( " | Lot: %.2f " , _lotSize );
return ;
} //---if Close
// ...
}
void _lotCalc()
{
//---
_lotMin = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN );
_lotMax = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX );
_lotStep = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP );
//---
}
#로트스텝 - 재오픈
@honest_knave - Lot Size 및 Lot Step에 대해 큰 도움을 주셔서 감사합니다.
따라서 " Lot Size >= ( Lot Step * 100 ) " " Lot Step * 100 "만큼 Lot 단계가 증가할 때 코드의 이 부분을 개선하면 됩니다.
if (sparam==lotbuttonplus)
{
if (lotsize>=(lotstep* 100 ))
{
lotstep=lotstep* 100 ;
Print ( "lot step: " ,lotstep);
}
lotmaxdivide=lotmax/lotmax *(lotvalue* 10 );
lotsize= fmin (lotmaxdivide,lotsize+(( ctrlfalse) ? lotstep* 10 : lotstep));
// global variable
infoupdate();
printf ( "Lot: %.2f " ,lotsize);
ObjectSetInteger ( 0 ,sparam, OBJPROP_STATE , false );
return ;
}
미리 감사드립니다.