MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 35 1...282930313233343536373839404142...1953 새 코멘트 Vitaly Muzichenko 2016.12.17 07:55 #341 여기 무슨 일이 있었는지. 따로 정확하게 판단하는듯 #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 6 #property indicator_plots 6 //--- plot UpBar #property indicator_label1 "UpBar" #property indicator_type1 DRAW_ARROW #property indicator_color1 clrDeepSkyBlue #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot DnBar #property indicator_label2 "DnBar" #property indicator_type2 DRAW_ARROW #property indicator_color2 clrDeepPink #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- plot UpFr #property indicator_label3 "UpFr" #property indicator_type3 DRAW_ARROW #property indicator_color3 clrBlue #property indicator_style3 STYLE_SOLID #property indicator_width3 1 //--- plot DnFr #property indicator_label4 "DnFr" #property indicator_type4 DRAW_ARROW #property indicator_color4 clrRed #property indicator_style4 STYLE_SOLID #property indicator_width4 1 //--- plot UpBarFr #property indicator_label5 "UpBarFr" #property indicator_type5 DRAW_ARROW #property indicator_color5 clrBlue #property indicator_style5 STYLE_SOLID #property indicator_width5 1 //--- plot DnBarFr #property indicator_label6 "DnBarFr" #property indicator_type6 DRAW_ARROW #property indicator_color6 clrRed #property indicator_style6 STYLE_SOLID #property indicator_width6 1 //--- input parameters input ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT ; input string cSymbol = "AUDCAD" ; input int CountBar = 5 ; // Баров подряд //--- indicator buffers double BufferUPb[]; double BufferDNb[]; double BufferUPf[]; double BufferDNf[]; double BufferUPbf[]; double BufferDNbf[]; //--- global variables double open1= 0 ,close1= 0 ,open2= 0 ,close2= 0 ; double frDn= 0 ,frUp= 0 ,frUp1= 0 ,frUp2= 0 ,frUp3= 0 ,frDn1= 0 ,frDn2= 0 ,frDn3= 0 ; string dSymbol; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- dSymbol=cSymbol== "" ? _Symbol :cSymbol; //--- indicator buffers mapping SetIndexBuffer ( 0 ,BufferUPb); SetIndexBuffer ( 1 ,BufferDNb); SetIndexBuffer ( 2 ,BufferUPf); SetIndexBuffer ( 3 ,BufferDNf); SetIndexBuffer ( 4 ,BufferUPbf); SetIndexBuffer ( 5 ,BufferDNbf); //--- setting a code from the Wingdings charset as the property of PLOT_ARROW SetIndexArrow ( 0 , 233 ); SetIndexArrow ( 1 , 234 ); SetIndexArrow ( 2 , 221 ); SetIndexArrow ( 3 , 222 ); SetIndexArrow ( 4 , 108 ); SetIndexArrow ( 5 , 108 ); //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate ( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int b= 1 ,s= 1 ; if (rates_total< 2 ) return ( 0 ); int limit=rates_total-prev_calculated; if (limit> 1 ) { limit=rates_total- 2 ; ArrayInitialize (BufferUPb, EMPTY_VALUE ); ArrayInitialize (BufferDNb, EMPTY_VALUE ); ArrayInitialize (BufferUPf, EMPTY_VALUE ); ArrayInitialize (BufferDNf, EMPTY_VALUE ); ArrayInitialize (BufferUPbf, EMPTY_VALUE ); ArrayInitialize (BufferDNbf, EMPTY_VALUE ); } for ( int i=limit; i>= 0 ; i--) { //-------------------------------------------------------------- open1= iOpen (dSymbol, TimeFrame, i); close1= iClose (dSymbol, TimeFrame, i); open2= iOpen (dSymbol, TimeFrame, i+ 1 ); close2= iClose (dSymbol, TimeFrame, i+ 1 ); if (open2<close2 && open1<close1 && open2<open1) { b++; if (b==CountBar) { BufferUPb[i]= Low [i]- 200 * _Point ; b= 1 ; } } else { b= 1 ;} //--- if (open2>close2 && open1>close1 && open2>open1) { s++; if (s==CountBar) { BufferDNb[i]= High [i]+ 200 * _Point ; s= 1 ; } } else { s= 1 ;} //-------------------------------------------------------------- frDn= iFractals (dSymbol, TimeFrame, MODE_LOWER , i); if (frDn!= 0 ) { frDn1=frDn; } //- if (frDn3 > frDn2 && frDn2 < frDn1) { BufferUPf[i]= Low [i]- 200 * _Point ; } if (frDn2!=frDn3 && frDn2!=frDn1) { frDn3=frDn2;} frDn2=frDn1; //--- frUp= iFractals (dSymbol, TimeFrame, MODE_UPPER , i); if (frUp!= 0 ) { frUp1=frUp; } //- if (frUp3 < frUp2 && frUp2 > frUp1) { BufferDNf[i]= High [i]+ 200 * _Point ; } if (frUp2!=frUp3 && frUp2!=frUp1) { frUp3=frUp2;} frUp2=frUp1; //-------------------------------------------------------------- //- if ( /*что сюда*/ ) { BufferUPbf[i]= Low [i]- 200 * _Point ; } //- if ( /*что сюда*/ ) { BufferDNbf[i]= High [i]+ 200 * _Point ; } //------------ } // end for //--- return value of prev_calculated for next call return (rates_total); } //-------------------------------------------------------------- 문제는 이 모든 것을 결합하여 버퍼 5와 6에 출력하는 방법입니다. 고맙습니다! Any questions from newcomers Problem with my indicator From theory to practice Andrei Sokolov 2016.12.17 15:00 #342 인사말. 주문 선택 기능에서 특정 주문을 카운팅하는 작성 기능에서 선택 유형을 주문 선택에서 티켓 선택으로 변경했습니다. int BuyLimitCount(){ int count= 0 ; for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){ if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicB){ if ( OrderType ()== OP_BUYLIMIT )count++;}}} return (count);} int BuyLimitCount(){ int count= 0 ; if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicB){ if ( OrderType ()== OP_BUYLIMIT )count++;}} return (count);} 그 후 수십 개의 양초를 시작하면 모든 것이 올바르게 해결되고 다음 오류가 로그로 이동하여 반복됩니다. 2016.12.17 17:44:31.609 2016.12.07 00:27 test3 EURUSD,M1: OrderModify 기능에 대한 알 수 없는 티켓 2 2016.12.17 17:44:31.608 2016.12.07 00:25 test3 EURUSD,M1: OrderModify 오류 4108 // 잘못된 티켓 번호입니다. 다음은 네 가지 기능 모두에서 그에 따라 변경된 전체 텍스트입니다. extern int pointsl= 100 , pointtp= 100 , MagicB= 1111 , MagicS= 2222 , bars= 10 ; extern double lotB= 0.1 , lotS= 0.1 ; double slB, tpB, slS, tpS; double x= 0 , z= 0 ; int ticketUP, ticketD; void OnTick () { double maxpr1=- 9999 ; double minpr1= 9999 ; for ( int shift1= 0 ; shift1<bars; shift1++){ double i= iHigh ( Symbol (), PERIOD_CURRENT , shift1); if (i>maxpr1){maxpr1=i;}} for ( int shiftA1= 0 ; shiftA1<bars; shiftA1++){ double y= iLow ( Symbol (), PERIOD_CURRENT , shiftA1); if (y<minpr1) {minpr1=y;}} if (BuyLimitCount()== 0 && BuyCount()== 0 ){slB= NormalizeDouble (minpr1-pointsl* Point , 5 );tpB= NormalizeDouble (minpr1+pointtp* Point , 5 );ticketUP= OrderSend ( Symbol (), OP_BUYLIMIT , lotB, minpr1, 3 , slB, tpB, "" , MagicB, 0 , Red); if (ticketUP==- 1 ) Print ( "ERROR OP_BUY" ); else Print ( "OP_BUY OK" );} if (SellLimitCount()== 0 && SellCount() == 0 ){slS= NormalizeDouble (maxpr1+pointsl* Point , 5 );tpS= NormalizeDouble (maxpr1-pointtp* Point , 5 );ticketD= OrderSend ( Symbol (), OP_SELLLIMIT , lotS, maxpr1, 3 , slS, tpS, "" , MagicS, 0 , Blue); if (ticketD==- 1 ) Print ( "ERROR OP_SELL" ); else Print ( "OP_SELL OK" );} if (x!=maxpr1){x=maxpr1;slS= NormalizeDouble (maxpr1+pointsl* Point , 5 );tpS= NormalizeDouble (maxpr1-pointtp* Point , 5 ); OrderModify (ticketD, maxpr1, slS, tpS, 0 , Blue);} if (z!=minpr1){z=minpr1;slB= NormalizeDouble (minpr1-pointsl* Point , 5 );tpB= NormalizeDouble (minpr1+pointtp* Point , 5 ); OrderModify (ticketUP, minpr1, slB, tpB, 0 , Red);} double maxpr=- 9999 ; double minpr= 9999 ; for ( int shift= 0 ; shift<bars; shift++){ double e= iHigh ( Symbol (), PERIOD_CURRENT , shift); if (e>maxpr){maxpr=e;}} for ( int shiftA= 0 ; shiftA<bars; shiftA++){ double r= iLow ( Symbol (), PERIOD_CURRENT , shiftA); if (r<minpr) {minpr=r;}} string a; if (bars== 1 )a= "bar: " ; else a= IntegerToString (bars, 1 ) + " bar's: " ; Comment ( "Last " , a, "max " , DoubleToStr (maxpr, 5 ), ", min " , DoubleToStr (minpr, 5 ), "." );} int BuyLimitCount(){ int count= 0 ; if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicB){ if ( OrderType ()== OP_BUYLIMIT )count++;}} return (count);} int BuyCount(){ int count= 0 ; if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicB){ if ( OrderType ()== OP_BUY )count++;}} return (count);} int SellLimitCount(){ int count= 0 ; if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicS){ if ( OrderType ()== OP_SELLLIMIT )count++;}} return (count);} int SellCount(){ int count= 0 ; if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicS){ if ( OrderType ()== OP_SELL )count++;}} return (count);} 왜 이런 일이 일어나고 어떻게 대처해야 합니까? Questions from Beginners MQL4 초보자의 질문 MQL4 MT4 Any questions from newcomers Artyom Trishkin 2016.12.17 15:04 #343 spoiltboy : 인사말. 주문 선택 기능에서 특정 주문을 카운팅하는 작성 기능에서 선택 유형을 주문 선택에서 티켓 선택으로 변경했습니다. int BuyLimitCount(){ int count= 0 ; for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){ if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicB){ if ( OrderType ()== OP_BUYLIMIT )count++;}}} return (count);} 그리고 어디? Andrei Sokolov 2016.12.17 15:08 #344 Artyom Trishkin : 그리고 어디? 추가되었습니다. 효율성에 감사드립니다. Artyom Trishkin 2016.12.17 15:12 #345 spoiltboy : 추가되었습니다. 효율성에 감사드립니다. 그리고 어디? 티켓의 선택은 어디에 있습니까? Andrei Sokolov 2016.12.17 15:13 #346 Artyom Trishkin : 그리고 어디? 티켓의 선택은 어디에 있습니까? 예, 위의 게시물에 있습니다. 아니면 문제가 있습니까? int BuyLimitCount(){ int count= 0 ; if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicB){ if ( OrderType ()== OP_BUYLIMIT )count++;}} return (count);} int BuyCount(){ int count= 0 ; if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicB){ if ( OrderType ()== OP_BUY )count++;}} return (count);} int SellLimitCount(){ int count= 0 ; if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicS){ if ( OrderType ()== OP_SELLLIMIT )count++;}} return (count);} int SellCount(){ int count= 0 ; if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicS){ if ( OrderType ()== OP_SELL )count++;}} return (count);} Artyom Trishkin 2016.12.17 15:21 #347 spoiltboy : 예, 위의 게시물에 있습니다. 아니면 문제가 있습니까? int BuyLimitCount(){ int count= 0 ; if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicB){ if ( OrderType ()== OP_BUYLIMIT )count++;}} return (count);} int BuyCount(){ int count= 0 ; if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicB){ if ( OrderType ()== OP_BUY )count++;}} return (count);} int SellLimitCount(){ int count= 0 ; if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicS){ if ( OrderType ()== OP_SELLLIMIT )count++;}} return (count);} int SellCount(){ int count= 0 ; if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){ if ( OrderMagicNumber ()==MagicS){ if ( OrderType ()== OP_SELL )count++;}} return (count);} 올바른 티켓을 선택하는 방법을 읽는 것이 좋습니다. 자신이하고있는 일을 스스로 이해하는 것이 바람직합니다. 휴대폰으로 다른건 말씀드리기 어렵네요. Andrei Sokolov 2016.12.17 15:31 #348 Artyom Trishkin : 올바른 티켓을 선택하는 방법을 읽는 것이 좋습니다. 자신이하고있는 일을 스스로 이해하는 것이 바람직합니다. 휴대폰으로 다른건 말씀드리기 어렵네요. 나는 그것을 읽었고 오류를 찾을 수 없었습니다 (홀의 도움이 필요합니다). 그리고 여기에 한 가지 포인트가 있습니다. 선택 기능을 변경한 후 주문 수정 기능에서 오류가 발생하기 시작했고 테스트 시작 후 얼마 지나지 않아 . Artyom Trishkin 2016.12.17 15:32 #349 spoiltboy : 나는 그것을 읽었고 오류를 찾을 수 없었습니다 (홀의 도움이 필요합니다). 그리고 여기에 한 가지 포인트가 있습니다. 선택 기능을 변경한 후 주문 수정 기능에서 오류가 발생하기 시작했고 테스트 시작 후 얼마 지나지 않아 . 예매권은 어디서 받나요? Andrei Sokolov 2016.12.17 15:35 #350 Artyom Trishkin : 예매권은 어디서 받나요? ticketUP= OrderSend ( Symbol (), OP_BUYLIMIT , lotB, minpr1, 3 , slB, tpB, "" , MagicB, 0 , Red);ticketD= OrderSend ( Symbol (), OP_SELLLIMIT , lotS, maxpr1, 3 , slS, tpS, "" , MagicS, 0 , Blue); 1...282930313233343536373839404142...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
여기 무슨 일이 있었는지.
따로 정확하게 판단하는듯
#property strict
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_plots 6
//--- plot UpBar
#property indicator_label1 "UpBar"
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrDeepSkyBlue
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot DnBar
#property indicator_label2 "DnBar"
#property indicator_type2 DRAW_ARROW
#property indicator_color2 clrDeepPink
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//--- plot UpFr
#property indicator_label3 "UpFr"
#property indicator_type3 DRAW_ARROW
#property indicator_color3 clrBlue
#property indicator_style3 STYLE_SOLID
#property indicator_width3 1
//--- plot DnFr
#property indicator_label4 "DnFr"
#property indicator_type4 DRAW_ARROW
#property indicator_color4 clrRed
#property indicator_style4 STYLE_SOLID
#property indicator_width4 1
//--- plot UpBarFr
#property indicator_label5 "UpBarFr"
#property indicator_type5 DRAW_ARROW
#property indicator_color5 clrBlue
#property indicator_style5 STYLE_SOLID
#property indicator_width5 1
//--- plot DnBarFr
#property indicator_label6 "DnBarFr"
#property indicator_type6 DRAW_ARROW
#property indicator_color6 clrRed
#property indicator_style6 STYLE_SOLID
#property indicator_width6 1
//--- input parameters
input ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT ;
input string cSymbol = "AUDCAD" ;
input int CountBar = 5 ; // Баров подряд
//--- indicator buffers
double BufferUPb[];
double BufferDNb[];
double BufferUPf[];
double BufferDNf[];
double BufferUPbf[];
double BufferDNbf[];
//--- global variables
double open1= 0 ,close1= 0 ,open2= 0 ,close2= 0 ;
double frDn= 0 ,frUp= 0 ,frUp1= 0 ,frUp2= 0 ,frUp3= 0 ,frDn1= 0 ,frDn2= 0 ,frDn3= 0 ;
string dSymbol;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
dSymbol=cSymbol== "" ? _Symbol :cSymbol;
//--- indicator buffers mapping
SetIndexBuffer ( 0 ,BufferUPb);
SetIndexBuffer ( 1 ,BufferDNb);
SetIndexBuffer ( 2 ,BufferUPf);
SetIndexBuffer ( 3 ,BufferDNf);
SetIndexBuffer ( 4 ,BufferUPbf);
SetIndexBuffer ( 5 ,BufferDNbf);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
SetIndexArrow ( 0 , 233 );
SetIndexArrow ( 1 , 234 );
SetIndexArrow ( 2 , 221 );
SetIndexArrow ( 3 , 222 );
SetIndexArrow ( 4 , 108 );
SetIndexArrow ( 5 , 108 );
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
int b= 1 ,s= 1 ;
if (rates_total< 2 ) return ( 0 );
int limit=rates_total-prev_calculated;
if (limit> 1 ) {
limit=rates_total- 2 ;
ArrayInitialize (BufferUPb, EMPTY_VALUE );
ArrayInitialize (BufferDNb, EMPTY_VALUE );
ArrayInitialize (BufferUPf, EMPTY_VALUE );
ArrayInitialize (BufferDNf, EMPTY_VALUE );
ArrayInitialize (BufferUPbf, EMPTY_VALUE );
ArrayInitialize (BufferDNbf, EMPTY_VALUE );
}
for ( int i=limit; i>= 0 ; i--) {
//--------------------------------------------------------------
open1= iOpen (dSymbol, TimeFrame, i);
close1= iClose (dSymbol, TimeFrame, i);
open2= iOpen (dSymbol, TimeFrame, i+ 1 );
close2= iClose (dSymbol, TimeFrame, i+ 1 );
if (open2<close2 && open1<close1 && open2<open1) {
b++;
if (b==CountBar) {
BufferUPb[i]= Low [i]- 200 * _Point ;
b= 1 ;
}
} else { b= 1 ;}
//---
if (open2>close2 && open1>close1 && open2>open1) {
s++;
if (s==CountBar) {
BufferDNb[i]= High [i]+ 200 * _Point ;
s= 1 ;
}
} else { s= 1 ;}
//--------------------------------------------------------------
frDn= iFractals (dSymbol, TimeFrame, MODE_LOWER , i);
if (frDn!= 0 ) {
frDn1=frDn;
}
//-
if (frDn3 > frDn2 && frDn2 < frDn1) {
BufferUPf[i]= Low [i]- 200 * _Point ;
}
if (frDn2!=frDn3 && frDn2!=frDn1) { frDn3=frDn2;} frDn2=frDn1;
//---
frUp= iFractals (dSymbol, TimeFrame, MODE_UPPER , i);
if (frUp!= 0 ) {
frUp1=frUp;
}
//-
if (frUp3 < frUp2 && frUp2 > frUp1) {
BufferDNf[i]= High [i]+ 200 * _Point ;
}
if (frUp2!=frUp3 && frUp2!=frUp1) { frUp3=frUp2;} frUp2=frUp1;
//--------------------------------------------------------------
//-
if ( /*что сюда*/ ) {
BufferUPbf[i]= Low [i]- 200 * _Point ;
}
//-
if ( /*что сюда*/ ) {
BufferDNbf[i]= High [i]+ 200 * _Point ;
}
//------------
} // end for
//--- return value of prev_calculated for next call
return (rates_total);
}
//--------------------------------------------------------------
문제는 이 모든 것을 결합하여 버퍼 5와 6에 출력하는 방법입니다.
고맙습니다!
인사말.
주문 선택 기능에서 특정 주문을 카운팅하는 작성 기능에서 선택 유형을 주문 선택에서 티켓 선택으로 변경했습니다.
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicB){
if ( OrderType ()== OP_BUYLIMIT )
count++;}}} return (count);}
int count= 0 ;
if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicB){
if ( OrderType ()== OP_BUYLIMIT )
count++;}} return (count);}
그 후 수십 개의 양초를 시작하면 모든 것이 올바르게 해결되고 다음 오류가 로그로 이동하여 반복됩니다.
2016.12.17 17:44:31.609 2016.12.07 00:27 test3 EURUSD,M1: OrderModify 기능에 대한 알 수 없는 티켓 2
2016.12.17 17:44:31.608 2016.12.07 00:25 test3 EURUSD,M1: OrderModify 오류 4108 // 잘못된 티켓 번호입니다.
다음은 네 가지 기능 모두에서 그에 따라 변경된 전체 텍스트입니다.
double slB, tpB, slS, tpS; double x= 0 , z= 0 ; int ticketUP, ticketD;
void OnTick ()
{
double maxpr1=- 9999 ; double minpr1= 9999 ;
for ( int shift1= 0 ; shift1<bars; shift1++)
{ double i= iHigh ( Symbol (), PERIOD_CURRENT , shift1);
if (i>maxpr1){maxpr1=i;}}
for ( int shiftA1= 0 ; shiftA1<bars; shiftA1++)
{ double y= iLow ( Symbol (), PERIOD_CURRENT , shiftA1);
if (y<minpr1) {minpr1=y;}}
if (BuyLimitCount()== 0 && BuyCount()== 0 ){
slB= NormalizeDouble (minpr1-pointsl* Point , 5 );
tpB= NormalizeDouble (minpr1+pointtp* Point , 5 );
ticketUP= OrderSend ( Symbol (), OP_BUYLIMIT , lotB, minpr1, 3 , slB, tpB, "" , MagicB, 0 , Red);
if (ticketUP==- 1 ) Print ( "ERROR OP_BUY" ); else Print ( "OP_BUY OK" );}
if (SellLimitCount()== 0 && SellCount() == 0 ){
slS= NormalizeDouble (maxpr1+pointsl* Point , 5 );
tpS= NormalizeDouble (maxpr1-pointtp* Point , 5 );
ticketD= OrderSend ( Symbol (), OP_SELLLIMIT , lotS, maxpr1, 3 , slS, tpS, "" , MagicS, 0 , Blue);
if (ticketD==- 1 ) Print ( "ERROR OP_SELL" ); else Print ( "OP_SELL OK" );}
if (x!=maxpr1){x=maxpr1;
slS= NormalizeDouble (maxpr1+pointsl* Point , 5 );
tpS= NormalizeDouble (maxpr1-pointtp* Point , 5 );
OrderModify (ticketD, maxpr1, slS, tpS, 0 , Blue);}
if (z!=minpr1){z=minpr1;
slB= NormalizeDouble (minpr1-pointsl* Point , 5 );
tpB= NormalizeDouble (minpr1+pointtp* Point , 5 );
OrderModify (ticketUP, minpr1, slB, tpB, 0 , Red);}
double maxpr=- 9999 ; double minpr= 9999 ;
for ( int shift= 0 ; shift<bars; shift++)
{ double e= iHigh ( Symbol (), PERIOD_CURRENT , shift);
if (e>maxpr){maxpr=e;}}
for ( int shiftA= 0 ; shiftA<bars; shiftA++)
{ double r= iLow ( Symbol (), PERIOD_CURRENT , shiftA);
if (r<minpr) {minpr=r;}}
string a;
if (bars== 1 )a= "bar: " ;
else a= IntegerToString (bars, 1 ) + " bar's: " ;
Comment ( "Last " , a, "max " , DoubleToStr (maxpr, 5 ), ", min " , DoubleToStr (minpr, 5 ), "." );
}
int BuyLimitCount(){
int count= 0 ;
if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicB){
if ( OrderType ()== OP_BUYLIMIT )
count++;}} return (count);}
int BuyCount(){
int count= 0 ;
if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicB){
if ( OrderType ()== OP_BUY )
count++;}} return (count);}
int SellLimitCount(){
int count= 0 ;
if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicS){
if ( OrderType ()== OP_SELLLIMIT )
count++;}} return (count);}
int SellCount(){
int count= 0 ;
if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicS){
if ( OrderType ()== OP_SELL )
count++;}} return (count);}
왜 이런 일이 일어나고 어떻게 대처해야 합니까?
인사말.
주문 선택 기능에서 특정 주문을 카운팅하는 작성 기능에서 선택 유형을 주문 선택에서 티켓 선택으로 변경했습니다.
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicB){
if ( OrderType ()== OP_BUYLIMIT )
count++;}}} return (count);}
그리고 어디?
추가되었습니다. 효율성에 감사드립니다.
그리고 어디? 티켓의 선택은 어디에 있습니까?
예, 위의 게시물에 있습니다. 아니면 문제가 있습니까?
int count= 0 ;
if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicB){
if ( OrderType ()== OP_BUYLIMIT )
count++;}} return (count);}
int BuyCount(){
int count= 0 ;
if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicB){
if ( OrderType ()== OP_BUY )
count++;}} return (count);}
int SellLimitCount(){
int count= 0 ;
if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicS){
if ( OrderType ()== OP_SELLLIMIT )
count++;}} return (count);}
int SellCount(){
int count= 0 ;
if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicS){
if ( OrderType ()== OP_SELL )
count++;}} return (count);}
예, 위의 게시물에 있습니다. 아니면 문제가 있습니까?
int count= 0 ;
if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicB){
if ( OrderType ()== OP_BUYLIMIT )
count++;}} return (count);}
int BuyCount(){
int count= 0 ;
if ( OrderSelect (ticketUP, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicB){
if ( OrderType ()== OP_BUY )
count++;}} return (count);}
int SellLimitCount(){
int count= 0 ;
if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicS){
if ( OrderType ()== OP_SELLLIMIT )
count++;}} return (count);}
int SellCount(){
int count= 0 ;
if ( OrderSelect (ticketD, SELECT_BY_TICKET , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==MagicS){
if ( OrderType ()== OP_SELL )
count++;}} return (count);}
올바른 티켓을 선택하는 방법을 읽는 것이 좋습니다. 자신이하고있는 일을 스스로 이해하는 것이 바람직합니다. 휴대폰으로 다른건 말씀드리기 어렵네요.
나는 그것을 읽었고 오류를 찾을 수 없었습니다 (홀의 도움이 필요합니다).
그리고 여기에 한 가지 포인트가 있습니다. 선택 기능을 변경한 후 주문 수정 기능에서 오류가 발생하기 시작했고 테스트 시작 후 얼마 지나지 않아 .
나는 그것을 읽었고 오류를 찾을 수 없었습니다 (홀의 도움이 필요합니다).
그리고 여기에 한 가지 포인트가 있습니다. 선택 기능을 변경한 후 주문 수정 기능에서 오류가 발생하기 시작했고 테스트 시작 후 얼마 지나지 않아 .
예매권은 어디서 받나요?
ticketD= OrderSend ( Symbol (), OP_SELLLIMIT , lotS, maxpr1, 3 , slS, tpS, "" , MagicS, 0 , Blue);