MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 62 1...555657585960616263646566676869...1953 새 코멘트 Sergey Dymov 2017.01.08 21:04 #611 여러분, 어떻게 하면 더 잘할 수 있는지 알려주세요. 손실 및 수익성 있는 거래로 인한 연속 안타 분포를 보고 싶습니다... 저는 배열을 잘 못합니다. 매도실패 후 Price_LastSell=5; Vol=Vol*Y; Izm=2; Opn_B=참; k=k+1; /* Buf1[p]=Buf1[p]+1; p=0; 경고 ("수익성", Buf1[1], ", ", Buf1[2], ", ", Buf1[3], ", ", Buf1[4], ", ", Buf1[5], ", " , Buf1[6], ", ", Buf1[7], ", ", Buf1[8], ", ", Buf1[9], ", ", Buf1[10]); */ 수익성 있는 판매 후 Price_LastSell=5; 볼륨 = 볼륨 열기; Izm=2; Opn_S=참; p=p+1; /* Buf2[k]=Buf2[k]+1; k=0; 경고("수익 없음 ", Buf2[1], ", ", Buf2[2], ", ", Buf2[3], ", ", Buf2[4], ", ", Buf2[5], ", " , Buf2[6], ", ", Buf2[7], ", ", Buf2[8], ", ", Buf2[9], ", ", Buf2[10], ", ", Buf2[11] , ", ", Buf2[12], ", ", Buf2[13], ", ", Buf2[14], ", ", Buf2[15]); */ 여기서 무슨 문제가 있습니까? /*에 쓰지 않고도 모든 것이 잘 작동합니다... Any questions from newcomers Question - Open Order [Archive!] Pure mathematics, physics, Artyom Trishkin 2017.01.08 21:08 #612 Сергей : 여러분, 최선의 방법을 알려주세요. 손실 및 수익성 있는 거래로 인한 연속 안타 분포를 보고 싶습니다... 저는 어레이에 강하지 않습니다. 매도실패 후 Price_LastSell=5; Vol=Vol*Y; Izm=2; Opn_B=참; k=k+1; /* Buf1[p]=Buf1[p]+1; p=0; 경고("수익성", Buf1[1], ", ", Buf1[2], ", ", Buf1[3], ", ", Buf1[4], ", ", Buf1[5], ", " , Buf1[6], ", ", Buf1[7], ", ", Buf1[8], ", ", Buf1[9], ", ", Buf1[10]); */ 수익성 있는 판매 후 Price_LastSell=5; 볼륨 = 볼륨 열기; Izm=2; Opn_S=참; p=p+1; /* Buf2[k]=Buf2[k]+1; k=0; 경고("수익 없음 ", Buf2[1], ", ", Buf2[2], ", ", Buf2[3], ", ", Buf2[4], ", ", Buf2[5], ", " , Buf2[6], ", ", Buf2[7], ", ", Buf2[8], ", ", Buf2[9], ", ", Buf2[10], ", ", Buf2[11] , ", ", Buf2[12], ", ", Buf2[13], ", ", Buf2[14], ", ", Buf2[15]); */ 여기서 무슨 문제가 있습니까? /*에 쓰지 않고도 모든 것이 잘 작동합니다... 오오... 그리고 "줄무늬"는 누구이며 "그들의 분포"는 무엇입니까? Sergey Dymov 2017.01.08 21:54 #613 일련의 손실 및 수익성 거래. 분포 - 예를 들어 360개의 손실 거래(보고서에서 볼 수 있음), 110개의 시리즈 손실 거래, 80개의 시리즈 손실 2개 거래 및 30개/3개의 손실 거래가 있습니다. 난 이걸했다: 손실 거래를 식별한 후 k=k+1; 수익성 있는 거래를 식별한 후 k==1인 경우 {k1=k1+1;} k==2인 경우 {k2=k2+1;} k==3인 경우 {k3=k3+1;} k=0; 하지만 이 항목은 15개 이상의 시리즈에 너무 크고 불편합니다. Any questions from newcomers Expert Advisor는 2개월 동안 백테스트에서 훌륭한 EA! Artyom Trishkin 2017.01.08 22:10 #614 Сергей : 일련의 손실 및 수익성 거래. 분포 - 예를 들어 360개의 손실 거래(보고서에서 볼 수 있음), 110개의 시리즈 손실 거래, 80개의 시리즈 손실 2개 거래 및 30개/3개의 손실 거래가 있습니다. 난 이걸했다: 손실 거래를 식별한 후 k=k+1; 수익성 있는 거래를 식별한 후 k==1인 경우 {k1=k1+1;} k==2인 경우 {k2=k2+1;} k==3인 경우 {k3=k3+1;} k=0; 하지만 이 항목은 15개 이상의 시리즈에 너무 크고 불편합니다. 당신의 임무는 완전히 명확하지 않습니다. 마지막으로 수익성이 있는/잃는 위치의 시리즈를 결정해야 합니까, 아니면 전체 거래 내역에서 이 시리즈를 모두 수집해야 합니까? Sergey Dymov 2017.01.08 22:19 #615 역사를 통틀어. 테스트가 끝나면 데이터를 수집하고 공개합니다. 그러나 나는 간단하게 합니다. 첫 번째 수익성 있는 것 이후, 일련의 무익한 것 이후에 쉼표로 간단히 구분된 경고와 함께 수량을 표시합니다. 로그에서 찾아서 분석합니다. 하지만 배열을 통해 수행하려는 코드를 단순화하고 싶었습니다. 가능합니까? 그리고 그것을 하는 가장 좋은 방법은 무엇입니까? Sergey Gritsay 2017.01.08 23:17 #616 Ibragim Dzhanaev : 나는 이것을했고, 이제는 모든 틱 에서 열리지 않지만 진입 신호를 전달합니다 ... double tp,sl,OrderBuy= 0 ,OrderSell= 0 ; double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell; int tiket; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер { if ( OrderType ()== OP_BUY ) { TotalBiu++; //Кол. покупок } if ( OrderType ()== OP_SELL ) { TotalSell++; //Кол. продаж } } } double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 ); double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 ); //+------------------------------------------------------------------+ double StopLossLevel; double TakeProfitLevel; if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ; if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ; tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits ); slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits ); tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits ); slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits ); ///--- if (TotalBiu== 0 ) if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue ); } if (TotalSell== 0 ) if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30) { tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed ); } } //+------------------------------------------------------------------+ 수정했습니다. 작동해야 double tp,sl,OrderBuy= 0 ,OrderSell= 0 ; double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell; int tiket; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер { if ( OrderType ()== OP_BUY ) { OrderBuy++; //Кол. покупок } if ( OrderType ()== OP_SELL ) { OrderSell++; //Кол. продаж } } } double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 ); double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 ); //+------------------------------------------------------------------+ double StopLossLevel; double TakeProfitLevel; if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ; if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ; tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits ); slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits ); tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits ); slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits ); ///--- if (OrderBuy== 0 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue ); if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ()); } if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30) { tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed ); if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ()); } } //+------------------------------------------------------------------+ ... Any questions from newcomers Questions from Beginners MQL4 초보자의 질문 MQL4 MT4 Vitaly Muzichenko 2017.01.09 03:40 #617 Sergey Gritsay : 수정했습니다. 작동해야 //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер { if ( OrderType ()== OP_BUY ) { OrderBuy++; //Кол. покупок } if ( OrderType ()== OP_SELL ) { OrderSell++; //Кол. продаж } } } double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 ); double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 ); //+------------------------------------------------------------------+ 선택을 재설정해야 할 것 같습니다 double tp,sl,OrderBuy= 0 ,OrderSell= 0 ; double slSell,slBuy,tpSell,tpBuy; int tiket; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { OrderBuy= 0 ; OrderSell= 0 ; //- for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер { if ( OrderType ()== OP_BUY ) { OrderBuy++; //Кол. покупок } if ( OrderType ()== OP_SELL ) { OrderSell++; //Кол. продаж } } } double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 ); double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 ); //+------------------------------------------------------------------+ tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits ); slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits ); tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits ); slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits ); ///--- if (OrderBuy== 0 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue ); if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ()); } if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30) { tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed ); if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ()); } } //+------------------------------------------------------------------+ Any questions from newcomers Questions from Beginners MQL4 초보자의 질문 MQL4 MT4 [삭제] 2017.01.09 08:31 #618 Vitaly Muzichenko : 선택을 재설정해야 할 것 같습니다 double tp,sl,OrderBuy= 0 ,OrderSell= 0 ; double slSell,slBuy,tpSell,tpBuy; int tiket; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { OrderBuy= 0 ; OrderSell= 0 ; //- for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер { if ( OrderType ()== OP_BUY ) { OrderBuy++; //Кол. покупок } if ( OrderType ()== OP_SELL ) { OrderSell++; //Кол. продаж } } } double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 ); double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 ); //+------------------------------------------------------------------+ tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits ); slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits ); tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits ); slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits ); ///--- if (OrderBuy== 0 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue ); if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ()); } if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30) { tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed ); if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ()); } } //+------------------------------------------------------------------+ 고맙습니다. 이제 신호가 아닌 일부 주문과 잘못된 주문을 엽니다. [삭제] 2017.01.09 08:36 #619 Sergey Gritsay : 수정했습니다. 작동해야 ... 당신이 쓴 것이 작동하지 않았습니다 ... Vitaly Muzichenko 2017.01.09 09:02 #620 Ibragim Dzhanaev : 고맙습니다. 이제 신호가 아닌 일부 주문과 잘못된 주문을 엽니다. 기존 막대를 확인 중입니다. double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 ); 가격이 오르고 레벨 70을 넘어 무역에 진입합니다. 막대가 닫히면 이미 RSI가 더 낮은 것을 볼 수 있지만 그 전에는 더 높았다가 다시 수준 아래로 돌아갔습니다. 닫힌 막대를 확인하면 이런 일이 발생하지 않고 확인된 신호에 항목이 표시됩니다. 이중 rsi= iRSI ( _Symbol , 0 , RSIperiod , PRICE_CLOSE , 1 ); 이중 rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 2 ); Any questions from newcomers [WARNING CLOSED!] Any newbie [경고, 주제 닫힘!] 포럼을 1...555657585960616263646566676869...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
여러분, 어떻게 하면 더 잘할 수 있는지 알려주세요. 손실 및 수익성 있는 거래로 인한 연속 안타 분포를 보고 싶습니다... 저는 배열을 잘 못합니다.
매도실패 후
Price_LastSell=5; Vol=Vol*Y; Izm=2; Opn_B=참; k=k+1;
/* Buf1[p]=Buf1[p]+1; p=0;
경고 ("수익성", Buf1[1], ", ", Buf1[2], ", ", Buf1[3], ", ", Buf1[4], ", ", Buf1[5], ", " , Buf1[6], ", ", Buf1[7], ", ", Buf1[8], ", ", Buf1[9], ", ", Buf1[10]); */
수익성 있는 판매 후
Price_LastSell=5; 볼륨 = 볼륨 열기; Izm=2; Opn_S=참; p=p+1;
/* Buf2[k]=Buf2[k]+1; k=0;
경고("수익 없음 ", Buf2[1], ", ", Buf2[2], ", ", Buf2[3], ", ", Buf2[4], ", ", Buf2[5], ", " , Buf2[6], ", ", Buf2[7], ", ", Buf2[8], ", ", Buf2[9], ", ", Buf2[10], ", ", Buf2[11] , ", ", Buf2[12], ", ", Buf2[13], ", ", Buf2[14], ", ", Buf2[15]); */
여기서 무슨 문제가 있습니까? /*에 쓰지 않고도 모든 것이 잘 작동합니다...
여러분, 최선의 방법을 알려주세요. 손실 및 수익성 있는 거래로 인한 연속 안타 분포를 보고 싶습니다... 저는 어레이에 강하지 않습니다.
매도실패 후
Price_LastSell=5; Vol=Vol*Y; Izm=2; Opn_B=참; k=k+1;
/* Buf1[p]=Buf1[p]+1; p=0;
경고("수익성", Buf1[1], ", ", Buf1[2], ", ", Buf1[3], ", ", Buf1[4], ", ", Buf1[5], ", " , Buf1[6], ", ", Buf1[7], ", ", Buf1[8], ", ", Buf1[9], ", ", Buf1[10]); */
수익성 있는 판매 후
Price_LastSell=5; 볼륨 = 볼륨 열기; Izm=2; Opn_S=참; p=p+1;
/* Buf2[k]=Buf2[k]+1; k=0;
경고("수익 없음 ", Buf2[1], ", ", Buf2[2], ", ", Buf2[3], ", ", Buf2[4], ", ", Buf2[5], ", " , Buf2[6], ", ", Buf2[7], ", ", Buf2[8], ", ", Buf2[9], ", ", Buf2[10], ", ", Buf2[11] , ", ", Buf2[12], ", ", Buf2[13], ", ", Buf2[14], ", ", Buf2[15]); */
여기서 무슨 문제가 있습니까? /*에 쓰지 않고도 모든 것이 잘 작동합니다...
일련의 손실 및 수익성 거래. 분포 - 예를 들어 360개의 손실 거래(보고서에서 볼 수 있음), 110개의 시리즈 손실 거래, 80개의 시리즈 손실 2개 거래 및 30개/3개의 손실 거래가 있습니다.
난 이걸했다:
손실 거래를 식별한 후
k=k+1;
수익성 있는 거래를 식별한 후
k==1인 경우 {k1=k1+1;}
k==2인 경우 {k2=k2+1;}
k==3인 경우 {k3=k3+1;}
k=0;
하지만 이 항목은 15개 이상의 시리즈에 너무 크고 불편합니다.
일련의 손실 및 수익성 거래. 분포 - 예를 들어 360개의 손실 거래(보고서에서 볼 수 있음), 110개의 시리즈 손실 거래, 80개의 시리즈 손실 2개 거래 및 30개/3개의 손실 거래가 있습니다.
난 이걸했다:
손실 거래를 식별한 후
k=k+1;
수익성 있는 거래를 식별한 후
k==1인 경우 {k1=k1+1;}
k==2인 경우 {k2=k2+1;}
k==3인 경우 {k3=k3+1;}
k=0;
하지만 이 항목은 15개 이상의 시리즈에 너무 크고 불편합니다.
당신의 임무는 완전히 명확하지 않습니다.
마지막으로 수익성이 있는/잃는 위치의 시리즈를 결정해야 합니까, 아니면 전체 거래 내역에서 이 시리즈를 모두 수집해야 합니까?
나는 이것을했고, 이제는 모든 틱 에서 열리지 않지만 진입 신호를 전달합니다 ...
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
TotalBiu++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
TotalSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ;
if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ;
tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (TotalBiu== 0 )
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
}
if (TotalSell== 0 )
if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
}
}
//+------------------------------------------------------------------+
수정했습니다. 작동해야
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ;
if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ;
tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (OrderBuy== 0 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
}
//+------------------------------------------------------------------+
...
수정했습니다. 작동해야
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
선택을 재설정해야 할 것 같습니다
double slSell,slBuy,tpSell,tpBuy;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
OrderBuy= 0 ; OrderSell= 0 ;
//-
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (OrderBuy== 0 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
}
//+------------------------------------------------------------------+
선택을 재설정해야 할 것 같습니다
double slSell,slBuy,tpSell,tpBuy;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
OrderBuy= 0 ; OrderSell= 0 ;
//-
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (OrderBuy== 0 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
}
//+------------------------------------------------------------------+
고맙습니다. 이제 신호가 아닌 일부 주문과 잘못된 주문을 엽니다.
수정했습니다. 작동해야
...
고맙습니다. 이제 신호가 아닌 일부 주문과 잘못된 주문을 엽니다.
기존 막대를 확인 중입니다. double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
가격이 오르고 레벨 70을 넘어 무역에 진입합니다. 막대가 닫히면 이미 RSI가 더 낮은 것을 볼 수 있지만 그 전에는 더 높았다가 다시 수준 아래로 돌아갔습니다.
닫힌 막대를 확인하면 이런 일이 발생하지 않고 확인된 신호에 항목이 표시됩니다.
이중 rsi= iRSI ( _Symbol , 0 , RSIperiod , PRICE_CLOSE , 1 );
이중 rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 2 );