#property indicator_chart_windowbool First = true ;
int start(){
if (First){
int indexFirstLeftOnChart = WindowFirstVisibleBar(); //иницилизируем под флагом, потому что в init() могут быть артефактыAlert ( "indexFirstLeftOnChart " , indexFirstLeftOnChart);
First = false ;
}
if (WindowFirstVisibleBar() != indexFirstLeftOnChart){ //проверяем на каждом тике, изменилось ли значениеAlert ( "first indexFirstLeftOnChart " , indexFirstLeftOnChart);
indexFirstLeftOnChart = WindowFirstVisibleBar(); //если изменилось, записываем егоAlert ( "second indexFirstLeftOnChart " , indexFirstLeftOnChart);
}
return ( 0 );
}
- 첫 번째 indexFirstLeftOnChart가 0인 것으로 밝혀졌기 때문에 매 틱마다 신호음이 울립니다. 그것을 처리하는 방법? 빌드 509.
//+-------------------------------------------------------------------------------------+//| Поиск своих ордеров |//+-------------------------------------------------------------------------------------+void FindOrders( int & t, int & p)
{
int total = OrdersTotal () - 1 ;
t = 0 ;
p = 0 ;
for ( int i=total; i>= 0 ; i--)
{
if (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) continue ;
if (OrderSymbol() != Symbol ()) continue ;
if (OrderMagicNumber() != i_magic) continue ;
if (OrderType() > 1 )
{
p++;
}
t++;
pr ( "FindOrders(): " + "t = " + t + " " + TimeToStr( TimeCurrent ()));
pr ( "FindOrders(): " + "p = " + p + " " + TimeToStr( TimeCurrent ()));
}
}
나는 처음부터 전화한다:
int start()
{
if (g_lastBarTime == Time[ 0 ]) // На текущем баре все необходимые действия..return ( 0 ); // ..уже были выполненыint oTotal = 0 , oPending = 0 ;
FindOrders(oTotal, oPending);
int signal = GetGeneralSignal(oTotal);
if (signal != SIGNAL_NO)
{
if (!Trade(signal))
return ( 0 );
}
else
실제로 인쇄할 때 주문이 없을 때에도 다음과 같이 표시됩니다(주문이 없을 때도 다음과 같이 인쇄됩니다. ...).
모두 좋은 저녁입니다. 최근에 저는 MQL4 언어를 마스터하기로 결정했습니다(저는 Sergey Kovalev의 교과서에서 배우고 있습니다). 오늘은 간단한 오더 오프닝 스크립트를 만들기 위해 연습을 해보기로 했습니다. 코드는 다음과 같이 밝혀졌습니다. 정수 시작() { OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point); 경고( GetLastError() );
반품;
}
스크립트가 작동하지 않고 오류 4109(거래가 허용되지 않음)가 표시되었습니다. 상황을 변경하려고 하면 오류 4016(초기화되지 않은 배열)도 나타납니다. 이러한 오류의 원인은 무엇이며 거래를 열기 위한 간단한 스크립트를 만드는 방법을 알고 싶습니다. 관심을 끌기 위해 https://book.mql4.com/ru/trading/ordersend 자습서(GetLastError 함수만 추가)에서 예제를 복사했지만 여전히 오류 4109가 발생했습니다.
intstart()// Спец. функция start(){// Открытие BUYOrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
return; // Выход из start()}
Кто может объяснить в чем проблема, буду очень признателен. Заранее спасибо.
메타 인용 따옴표에서 그러한 울타리를 처리하는 방법을 알려주십시오.)
메시지를 가로채야 합니다.
메시지가 이미 실행되었으면 큐에서 이미 제거된 것입니다.
그래서 다음 질문이 있습니다.
- 첫 번째 indexFirstLeftOnChart가 0인 것으로 밝혀졌기 때문에 매 틱마다 신호음이 울립니다. 그것을 처리하는 방법? 빌드 509.
메시지가 이미 실행되었으면 큐에서 이미 제거된 것입니다.
일반적으로 실행 전에 가로채십시오. 그렇지 않으면 가로채는 이유가 명확하지 않습니까?
실행 전에 질문이 아닙니다. 이는 AccountNumber() 유효성 검사를 dll로 전송하는 것은 의미가 없습니다. dll의 계정 번호는 이미 하드 코딩되어 있다고 가정합니다.
나는 간단한 순간에 무언가를 가지고 있습니다. 주문을 조회하는 기능이 있습니다.
t - 모든 주문의 카운터.
p - 보류 중인 주문의 카운터.
나는 처음부터 전화한다:
실제로 인쇄할 때 주문이 없을 때에도 다음과 같이 표시됩니다(주문이 없을 때도 다음과 같이 인쇄됩니다. ...).
그렇습니까?
정수 시작()
{
OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
경고( GetLastError() );
반품;
}
스크립트가 작동하지 않고 오류 4109(거래가 허용되지 않음)가 표시되었습니다. 상황을 변경하려고 하면 오류 4016(초기화되지 않은 배열)도 나타납니다. 이러한 오류의 원인은 무엇이며 거래를 열기 위한 간단한 스크립트를 만드는 방법을 알고 싶습니다. 관심을 끌기 위해 https://book.mql4.com/ru/trading/ordersend 자습서(GetLastError 함수만 추가)에서 예제를 복사했지만 여전히 오류 4109가 발생했습니다.