초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 31 1...242526272829303132333435363738...260 새 코멘트 Andrei Sokolov 2016.12.11 21:11 #301 옵션으로 이 상태에서 이 삭제 기능을 등록하는 방법을 알려주세요. Renat Akhtyamov 2016.12.11 21:12 #302 spoiltboy : 옵션으로 이 상태에서 이 삭제 기능을 등록하는 방법을 알려주세요. 먼저 삭제해야 하는 지연 티켓을 결정해야 합니다. 티켓이 0이거나 정의되지 않은 경우 - 삭제하지 마십시오. Renat Akhtyamov 2016.12.11 21:23 #303 spoiltboy : 이것은 다른 주문에 대한 것입니다. 조건별로 하나씩 삭제하고, 조건 없이 다른 하나를 삭제하는 기능입니다. 문제는 제 경우 삭제 기능이 조건 없이 성공적으로 작동하는 이유이고, 조건에 넣으면 조건이 발생했을 때 오류가 발생하는 이유입니다. 조건을 수정해야 합니다. 조건 없이는 불가능합니다. 로그가 전체 하드 디스크를 차지하게 됩니다. Andrei Sokolov 2016.12.12 08:44 #304 Renat Akhtyamov : 먼저 삭제해야 하는 지연 티켓을 결정해야 합니다. 티켓이 0이거나 정의되지 않은 경우 - 삭제하지 마십시오. 따라서 하나는 ticketD이고 다른 하나 는 ticketUP입니다. 아니면 내가 뭔가를 혼동하고 있습니까? Renat Akhtyamov 2016.12.12 08:51 #305 spoiltboy : 따라서 하나는 ticketD이고 다른 하나 는 ticketUP입니다. 아니면 내가 뭔가를 혼동하고 있습니까? ticketUP 이 이미 삭제되었는지 어떻게 확인할 수 있습니까? 제거됨, 티켓업을 필요한 상태로 업데이트하고 지연 삭제 조건이 작동하지 않으며 이 조건도 코드에 추가해야 합니다. Andrei Sokolov 2016.12.12 09:43 #306 Renat Akhtyamov : ticketUP 이 이미 삭제되었는지 어떻게 확인할 수 있습니까? 제거됨, 티켓업을 필요한 상태로 업데이트하고 지연 삭제 조건이 작동하지 않으며 이 조건도 코드에 추가해야 합니다. 따라서 티켓이 티켓D인 주문 , 다른 티켓UP 이 먼저 생성되고(부재 조건에 따라), 그 후에는 이미 삭제됩니다. if (BuyLimitCount()== 0 && BuyCount()== 0 ){ slB= NormalizeDouble (minpr1-pointssl* Point , 5 ); tpB= NormalizeDouble (minpr1+pointtp* Point , 5 ); int ticketUP= OrderSend ( 심볼 (), OP_BUYLIMIT , lotB, minpr1, 3 , slB, tpB, "" , MagicB, 0 , 레드); if (ticketUP==- 1 ) 인쇄 ( "ERROR OP_BUY" ); 또 다른 인쇄 ( "OP_BUY OK" );} if (SellLimitCount()== 0 && SellCount() == 0 ){ slS= NormalizeDouble (maxpr1+pointssl* Point , 5 ); tpS= NormalizeDouble (maxpr1-pointtp* Point , 5 ); int ticketD= OrderSend ( Symbol (), OP_SELLLIMIT , lotS, maxpr1, 3 , slS, tpS, "" , MagicS, 0 , Blue); if (ticketD==- 1 ) 인쇄 ( "오류 OP_SELL" ); 또 다른 인쇄 ( "OP_SELL OK" );} if (x!=maxpr1){x=maxpr1; OrderDelete (티켓D);} OrderDelete (티켓업); 헷갈리면 어떡하지? Questions from Beginners MQL4 Any questions from newcomers MQL4 및 MQL5에 대한 Renat Akhtyamov 2016.12.12 09:47 #307 spoiltboy : 따라서 티켓이 티켓D인 주문 , 다른 티켓UP 이 먼저 생성되고(부재 조건에 따라), 그 후에는 이미 삭제됩니다. if (BuyLimitCount()== 0 && BuyCount()== 0 ){ slB= NormalizeDouble (minpr1-pointssl* Point , 5 ); tpB= NormalizeDouble (minpr1+pointtp* Point , 5 ); int ticketUP= OrderSend ( 심볼 (), OP_BUYLIMIT , lotB, minpr1, 3 , slB, tpB, "" , MagicB, 0 , 레드); if (ticketUP==- 1 ) 인쇄 ( "ERROR OP_BUY" ); 또 다른 인쇄 ( "OP_BUY OK" );} if (SellLimitCount()== 0 && SellCount() == 0 ){ slS= NormalizeDouble (maxpr1+pointssl* Point , 5 ); tpS= NormalizeDouble (maxpr1-pointtp* Point , 5 ); int ticketD= OrderSend ( Symbol (), OP_SELLLIMIT , lotS, maxpr1, 3 , slS, tpS, "" , MagicS, 0 , Blue); if (ticketD==- 1 ) 인쇄 ( "오류 OP_SELL" ); 또 다른 인쇄 ( "OP_SELL OK" );} if (x!=maxpr1){x=maxpr1; OrderDelete (티켓D);} OrderDelete (티켓업); 헷갈리면 어떡하지? 따라서 조건 없는 명령이 다시 나타납니다. OrderDelete (티켓업); 코드가 변경되지 않은 이유는 무엇입니까? 시간을 내서 최소한 "생각"하고 이해하고 + 그들이 당신에게 쓴 것과 그들이 준 조언을 읽으십시오. 그건 그렇고, 여기에 프리랜서 가 있습니다. 작동하지 않으면 ... Andrei Sokolov 2016.12.12 10:08 #308 Renat Akhtyamov : 따라서 조건이 없는 명령이 다시 나타납니다. OrderDelete (티켓업); 코드가 변경되지 않은 이유는 무엇입니까? 시간을 내서 최소한 "생각"하고 이해하고 + 그들이 당신에게 쓴 것과 그들이 준 조언을 읽으십시오. 그건 그렇고, 여기에 프리랜서 가 있습니다. 작동하지 않으면 ... 이것은 조건이 없는 것입니다. 이것이 삭제가 발생하는 방식이기 때문입니다. 그러나 조건이 있는 것은 아닙니다. 그래서 제가 못하는 부분을 적어보았습니다. 다음과 같이 작성된 경우: 주문삭제(티켓D); 주문삭제(티켓업); 그런 다음 각 틱에서 이전에 각 틱에 생성된 주문(부재 조건에 의해)이 삭제됩니다. 그리고 조건으로 작성하는 경우: if (x!=maxpr1){x=maxpr1; 주문삭제(티켓D);} if (z!=minpr1){z=minpr1; 주문삭제(티켓업);} 조건에 접근하면 제거 오류를 기록합니다. 이 조건에서 지정된 주문의 삭제를 기록하는 방법은 무엇입니까? Renat Akhtyamov 2016.12.12 10:11 #309 spoiltboy : 이것은 조건이 없는 것입니다. 이것이 삭제가 발생하는 방식이기 때문입니다. 그러나 조건이 있는 것은 아닙니다. 그래서 제가 못하는 부분을 적어보았습니다. 다음과 같이 작성된 경우: 주문삭제(티켓D); 주문삭제(티켓업); 그런 다음 각 틱에서 이전에 각 틱에 생성된 주문(부재 조건에 의해)이 삭제됩니다. 그리고 조건으로 작성하는 경우: if (x!=maxpr1){x=maxpr1; 주문삭제(티켓D);} if (z!=minpr1){z=minpr1; 주문삭제(티켓업);} 조건에 접근하면 제거 오류를 기록합니다. 이 조건에서 지정된 주문의 삭제를 기록하는 방법은 무엇입니까? 예금 삭제 조건은 삭제할 수 없습니다! 지연을 열 때 ticketUP 및 ticketD를 전역 변수 에 작성해야 합니다. GlobalVariableSet ("ticketUP",ticketUP); GlobalVariableSet("티켓D",티켓D); 그리고 거기에서 예금을 제거하기 전에 계산합니다. ticketUP=GlobalVariableGet("ticketUP") ticketD=GlobalVariableGet("티켓D") 그건 그렇고, 거기 봐 (전 세계에서)-당신에게 무슨 일이 일어나고 있는지, 어떤 티켓이 등록되어 있습니까? 그 후에는 모든 것이 원하는 대로 작동할 것이라고 생각합니다. extream 2016.12.12 11:59 #310 안녕하세요! 누가 문제를 해결하는 데 도움이 될까요? 저는 동적 배열 에 대한 래퍼를 작성 중입니다. 여기에 클래스 코드가 있습니다. class CArray{ private : template <typename T> T _array[]; int _index; int _err; int _err_sys; public : CArray(){_index = - 1 ; _err = 0 ; _err_sys = 0 ;} ~CArray(){} // template <typename T> T operator []( int i){ if ((_index == - 1 ) || (i < 0 ) || (i > _index)) {_err_sys = - 1 ;} return (_array[i]); } T at( int i){ if ((_index == - 1 ) || (i < 0 ) || (i > _index)) {_err_sys = - 1 ;} return (_array[i]); } void push_back(T value ){ _array[++_index] = value ; }}; 프로그램 코드의 일부: #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.1" #property strict #include "Array.mqh" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ CArray *array; int OnInit () { int b = 1 ; array = new CArray(); array.push_back(b); int a = array.at( 0 ); //--- return ( INIT_SUCCEEDED ); }... 실제 데이터에 대해 Expert Advisor를 실행하려고 하면 다음 오류가 발생합니다. 내부 오류 #-1005 내가 무엇을 잘못하고 있지? 미리 감사드립니다! Questions from Beginners MQL4 Problem with calling member Please "array out of 1...242526272829303132333435363738...260 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
옵션으로 이 상태에서 이 삭제 기능을 등록하는 방법을 알려주세요.
먼저 삭제해야 하는 지연 티켓을 결정해야 합니다.
티켓이 0이거나 정의되지 않은 경우 - 삭제하지 마십시오.
이것은 다른 주문에 대한 것입니다. 조건별로 하나씩 삭제하고, 조건 없이 다른 하나를 삭제하는 기능입니다.
문제는 제 경우 삭제 기능이 조건 없이 성공적으로 작동하는 이유이고, 조건에 넣으면 조건이 발생했을 때 오류가 발생하는 이유입니다.
먼저 삭제해야 하는 지연 티켓을 결정해야 합니다.
티켓이 0이거나 정의되지 않은 경우 - 삭제하지 마십시오.
따라서 하나는 ticketD이고 다른 하나 는 ticketUP입니다.
아니면 내가 뭔가를 혼동하고 있습니까?
따라서 하나는 ticketD이고 다른 하나 는 ticketUP입니다.
아니면 내가 뭔가를 혼동하고 있습니까?
ticketUP 이 이미 삭제되었는지 어떻게 확인할 수 있습니까?
제거됨, 티켓업을 필요한 상태로 업데이트하고 지연 삭제 조건이 작동하지 않으며 이 조건도 코드에 추가해야 합니다.
ticketUP 이 이미 삭제되었는지 어떻게 확인할 수 있습니까?
제거됨, 티켓업을 필요한 상태로 업데이트하고 지연 삭제 조건이 작동하지 않으며 이 조건도 코드에 추가해야 합니다.
따라서 티켓이 티켓D인 주문 , 다른 티켓UP 이 먼저 생성되고(부재 조건에 따라), 그 후에는 이미 삭제됩니다.
if (BuyLimitCount()== 0 && BuyCount()== 0 ){slB= NormalizeDouble (minpr1-pointssl* Point , 5 );
tpB= NormalizeDouble (minpr1+pointtp* Point , 5 );
int ticketUP= OrderSend ( 심볼 (), OP_BUYLIMIT , lotB, minpr1, 3 , slB, tpB, "" , MagicB, 0 , 레드);
if (ticketUP==- 1 ) 인쇄 ( "ERROR OP_BUY" ); 또 다른 인쇄 ( "OP_BUY OK" );}
if (SellLimitCount()== 0 && SellCount() == 0 ){
slS= NormalizeDouble (maxpr1+pointssl* Point , 5 );
tpS= NormalizeDouble (maxpr1-pointtp* Point , 5 );
int ticketD= OrderSend ( Symbol (), OP_SELLLIMIT , lotS, maxpr1, 3 , slS, tpS, "" , MagicS, 0 , Blue);
if (ticketD==- 1 ) 인쇄 ( "오류 OP_SELL" ); 또 다른 인쇄 ( "OP_SELL OK" );}
if (x!=maxpr1){x=maxpr1; OrderDelete (티켓D);}
OrderDelete (티켓업);
헷갈리면 어떡하지?
따라서 티켓이 티켓D인 주문 , 다른 티켓UP 이 먼저 생성되고(부재 조건에 따라), 그 후에는 이미 삭제됩니다.
if (BuyLimitCount()== 0 && BuyCount()== 0 ){slB= NormalizeDouble (minpr1-pointssl* Point , 5 );
tpB= NormalizeDouble (minpr1+pointtp* Point , 5 );
int ticketUP= OrderSend ( 심볼 (), OP_BUYLIMIT , lotB, minpr1, 3 , slB, tpB, "" , MagicB, 0 , 레드);
if (ticketUP==- 1 ) 인쇄 ( "ERROR OP_BUY" ); 또 다른 인쇄 ( "OP_BUY OK" );}
if (SellLimitCount()== 0 && SellCount() == 0 ){
slS= NormalizeDouble (maxpr1+pointssl* Point , 5 );
tpS= NormalizeDouble (maxpr1-pointtp* Point , 5 );
int ticketD= OrderSend ( Symbol (), OP_SELLLIMIT , lotS, maxpr1, 3 , slS, tpS, "" , MagicS, 0 , Blue);
if (ticketD==- 1 ) 인쇄 ( "오류 OP_SELL" ); 또 다른 인쇄 ( "OP_SELL OK" );}
if (x!=maxpr1){x=maxpr1; OrderDelete (티켓D);}
OrderDelete (티켓업);
헷갈리면 어떡하지?
따라서 조건 없는 명령이 다시 나타납니다.
OrderDelete (티켓업);
코드가 변경되지 않은 이유는 무엇입니까?
시간을 내서 최소한 "생각"하고 이해하고 + 그들이 당신에게 쓴 것과 그들이 준 조언을 읽으십시오.
그건 그렇고, 여기에 프리랜서 가 있습니다. 작동하지 않으면 ...
따라서 조건이 없는 명령이 다시 나타납니다.
OrderDelete (티켓업);
코드가 변경되지 않은 이유는 무엇입니까?
시간을 내서 최소한 "생각"하고 이해하고 + 그들이 당신에게 쓴 것과 그들이 준 조언을 읽으십시오.
그건 그렇고, 여기에 프리랜서 가 있습니다. 작동하지 않으면 ...
이것은 조건이 없는 것입니다. 이것이 삭제가 발생하는 방식이기 때문입니다. 그러나 조건이 있는 것은 아닙니다. 그래서 제가 못하는 부분을 적어보았습니다. 다음과 같이 작성된 경우:
주문삭제(티켓D);
주문삭제(티켓업);
그런 다음 각 틱에서 이전에 각 틱에 생성된 주문(부재 조건에 의해)이 삭제됩니다. 그리고 조건으로 작성하는 경우:
if (x!=maxpr1){x=maxpr1; 주문삭제(티켓D);}
if (z!=minpr1){z=minpr1; 주문삭제(티켓업);}
조건에 접근하면 제거 오류를 기록합니다.
이 조건에서 지정된 주문의 삭제를 기록하는 방법은 무엇입니까?
이것은 조건이 없는 것입니다. 이것이 삭제가 발생하는 방식이기 때문입니다. 그러나 조건이 있는 것은 아닙니다. 그래서 제가 못하는 부분을 적어보았습니다. 다음과 같이 작성된 경우:
주문삭제(티켓D);
주문삭제(티켓업);
그런 다음 각 틱에서 이전에 각 틱에 생성된 주문(부재 조건에 의해)이 삭제됩니다. 그리고 조건으로 작성하는 경우:
if (x!=maxpr1){x=maxpr1; 주문삭제(티켓D);}
if (z!=minpr1){z=minpr1; 주문삭제(티켓업);}
조건에 접근하면 제거 오류를 기록합니다.
이 조건에서 지정된 주문의 삭제를 기록하는 방법은 무엇입니까?
예금 삭제 조건은 삭제할 수 없습니다!
지연을 열 때 ticketUP 및 ticketD를 전역 변수 에 작성해야 합니다.
GlobalVariableSet ("ticketUP",ticketUP);
GlobalVariableSet("티켓D",티켓D);
그리고 거기에서 예금을 제거하기 전에 계산합니다.
ticketUP=GlobalVariableGet("ticketUP")
ticketD=GlobalVariableGet("티켓D")
그건 그렇고, 거기 봐 (전 세계에서)-당신에게 무슨 일이 일어나고 있는지, 어떤 티켓이 등록되어 있습니까?
그 후에는 모든 것이 원하는 대로 작동할 것이라고 생각합니다.
{
private :
template <typename T>
T _array[];
int _index;
int _err;
int _err_sys;
public :
CArray(){_index = - 1 ; _err = 0 ; _err_sys = 0 ;}
~CArray(){}
// template <typename T>
T operator []( int i){
if ((_index == - 1 ) || (i < 0 ) || (i > _index)) {_err_sys = - 1 ;}
return (_array[i]);
}
T at( int i){
if ((_index == - 1 ) || (i < 0 ) || (i > _index)) {_err_sys = - 1 ;}
return (_array[i]);
}
void push_back(T value ){
_array[++_index] = value ;
}
};
프로그램 코드의 일부:
#property link "https://www.mql5.com"
#property version "1.1"
#property strict
#include "Array.mqh"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
CArray *array;
int OnInit ()
{
int b = 1 ;
array = new CArray();
array.push_back(b);
int a = array.at( 0 );
//---
return ( INIT_SUCCEEDED );
}
...
실제 데이터에 대해 Expert Advisor를 실행하려고 하면 다음 오류가 발생합니다. 내부 오류 #-1005
내가 무엇을 잘못하고 있지? 미리 감사드립니다!