[아카이브!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 2. - 페이지 477

 

demlin :
Еще вопрос: какой функцией можно вытащить стоимость одного пункта инструмента?

https://docs.mql4.com/en/constants/marketinfo

MarketInfo( Symbol (), MODE_TICKVALUE);
 
LazarevDenis :

어드바이저가 시간당 한 번만 거래할 수 있도록 어드바이저에 어떤 코드를 입력해야 하는지 알려주세요

예를 들어, 고문이 일하고 주문이 열렸습니다(더 이상 관심이 없음). 시간 단위의 현재 표시줄에서 주문이 더 이상 열리지 않아야 합니다.

모든 것이 다음과 같이 보입니다.

정수 hh;
int 현재 시간;
CurrentHour=TimeHour(TimeCurrent());
if (CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}

하지만 수많은 주문이 열려 있습니다.

 int hh = 0 ;
start() 및 init() 전에 설정해야 합니다.
 
얘들 아, 역사 테스터에서 수동 거래에 대한 고문을 찾는 것을 도와주세요. 코드베이스에는 몇 가지가 있습니다. nrafi 의 왼쪽 하단 모서리에 있는 레이블을 끌어서 제어하는 코드가 필요합니다. 매우 간단합니다. 찾을 수 없습니다. HistTraining 및 테스트 시각화. 수동 거래는 동일하지 않습니다. 잠시만요, 고문님, 거기에서 테스트가 중지된 수준을 설정할 수 있습니다.
 
demlin :

안녕하세요!

이것이 무엇을 의미하는지 알려주세요:

주문 구매 ...... 실패 [거래 시간 초과]

구체적으로 이 시간 초과는 무엇입니까?

https://www.mql5.com/ru/forum/112612
이것은 거래가 열렸는지 여부에 관계없이 서버의 응답을 기다리는 시간입니다. 또한 거래가 열리지 않았다는 보장도 없습니다 .

따라서 개발자가 권장하는 대로 1분 안에 주문이 열렸는지 확인한 후 추가로 진행해야 합니다.

 

rlx :


start() 및 init() 전에 설정해야 합니다.


정수 hh = 0;
정수 초기화()
{
리턴(0);
}
정수 시작()
{
//------------------------------------------------ -
정수 카운터;
countorder=OrdersTotal();
if (countorder==0)
{
경고("미결 주문 없음");
}또 다른
{
경고("진행 중인 주문이 있습니다");
}
정수 hh;
int 현재 시간;
CurrentHour=TimeHour(TimeCurrent());
if ((CurrentHour!=hh)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}
//------------------------------------------------ -
리턴(0);
}

정수 초기화()
{
리턴(0);
}

그들이 말했듯이 도움이되지 않았으며 열린 주문 수에 대한 설명이 추가되었습니다. 이제 이전 주문을 마감한 직후에 주문을 엽니다.

OrderCloseTime()을 통해 우회했는데 이제 작동하는 것 같습니다.

정수 카운터;
countorder=OrdersTotal();
if (countorder==0)
{
경고("미결 주문 없음");
}또 다른
{
경고("진행 중인 주문이 있습니다");
}
정수 hh;
int 현재 시간;
정수 LastOrderCloseTime;
CurrentHour=TimeHour(TimeCurrent());


주문 선택 ( HistoryTotal ()-1,SELECT_BY_POS,MODE_HISTORY);
hh=TimeHour(OrderCloseTime());


if ((CurrentHour!=hh)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
}

 
rlx :

https://www.mql5.com/ru/forum/112612
이것은 거래가 열렸는지 여부에 관계없이 서버의 응답을 기다리는 시간입니다. 그리고 거래가 열리지 않았다는 보장은 없습니다 .

따라서 개발자가 권장하는 대로 1분 안에 주문이 열렸는지 확인한 후 추가로 진행해야 합니다.

답변 감사합니다
 
Roger :

지루하고 싶지 않지만...

OrderTotal()이 0이면 주문이 어떻게 열릴지 설명하십시오.

고맙습니다.


아래는 조건에서 실행되는 코드 블록을 구분하는 괄호가 있는 그림입니다.

 if ( OrdersTotal ()> 0 &&tral> 0 &&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY))

OrderSend() 작업 은 이 조건의 영향을 받지 않습니다.

 

"미래"에서 막대 번호를 얻는 방법 :)

iBarShift() 함수는 히스토리에서 막대 번호를 가져오는 데 훌륭하게 작동하지만 줄을 0 막대를 넘어 오른쪽으로 이동하는 경우 이 코드의 막대 번호를 얻는 방법은 무엇입니까?

 static string name_vline = "linescr" ;
//________________________________________________
int init(){
   DrawLine(name_vline,Time[ 5 ], Red );
return ( 0 );
}
//________________________________________________
int deinit() {
return ( 0 );
}
//________________________________________________
int start(){
   datetime X;
   X = ObjectGet(name_vline,OBJPROP_TIME1);
   Comment ( "Координата X = " ,iBarShift( NULL , 0 ,X), "\n" ,
           "Время = " ,TimeToStr(X));
return ( 0 );
}
//________________________________________________
void DrawLine( string name, datetime tim, color cl){
   ObjectCreate (name, OBJ_VLINE , 0 , tim, Close[ 0 ], tim, Close[ 0 ]);
   ObjectSet(name, OBJPROP_BACK   , false);
   ObjectSet(name, OBJPROP_COLOR , cl);
   ObjectSet(name, OBJPROP_STYLE , STYLE_SOLID );      
   ObjectSet(name, OBJPROP_WIDTH , 0 );
}
 
IgorM :

"미래"에서 막대 번호를 얻는 방법 :)

iBarShift() 함수는 히스토리에서 막대 번호를 가져오는 데 훌륭하게 작동하지만 줄을 0 막대를 넘어 오른쪽으로 이동하는 경우 이 코드의 막대 번호를 얻는 방법은 무엇입니까?

Time[0]에 대한 오프셋을 얻을 수 있습니다.

shift = MathRound ((Time[ 0] - X) / ( Period ()* 60 ));
 
rlx :

Time[0]에 대한 오프셋을 얻을 수 있습니다.

고맙습니다! 이제 모든 것이 정상입니다!

 static string name_vline = "linescr" ;
//________________________________________________
int init(){
   DrawLine(name_vline,Time[ 5 ], Red );
return ( 0 );
}
//________________________________________________
int deinit() {
return ( 0 );
}
//________________________________________________
int start(){
   datetime X;
   X = ObjectGet(name_vline,OBJPROP_TIME1);
   if (X<=Time[ 0 ])
         Comment ( "Координата X = " ,iBarShift( NULL , 0 ,X), "\n" ,   "Время = " ,TimeToStr(X));
   else
         Comment ( "Координата X = " , MathRound ((Time[ 0 ] - X) / ( Period ()* 60 )), "\n" , "Время = " ,TimeToStr(X));
return ( 0 );
}
//________________________________________________
void DrawLine( string name, datetime tim, color cl){
   ObjectCreate (name, OBJ_VLINE , 0 , tim, Close[ 0 ], tim, Close[ 0 ]);
   ObjectSet(name, OBJPROP_BACK   , false);
   ObjectSet(name, OBJPROP_COLOR , cl);
   ObjectSet(name, OBJPROP_STYLE , STYLE_SOLID );      
   ObjectSet(name, OBJPROP_WIDTH , 0 );
}