MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 61 1...545556575859606162636465666768...1953 새 코멘트 RichLux 2017.01.08 19:54 #601 if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY , Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue ); } if (주문판매< 1 && rsi<Urov_30 && rsi1>Urov_30) { tiket= OrderSend ( _Symbol , OP_SELL , Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed ); } 하지만 당신은 필요 if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY , Lot, Ask ,slippage, slBuy , tpBuy, NULL , MagicNumber, 0 , clrBlue ); } if (주문판매< 1 && rsi<Urov_30 && rsi1>Urov_30) { tiket= OrderSend ( _Symbol , OP_SELL , Lot, Bid , Slippage, slSell , tpSell , NULL , MagicNumber, 0 , clrRed ); } Artyom Trishkin 2017.01.08 20:05 #602 Ibragim Dzhanaev : 도움이되지 않았습니다 ( 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 () { for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber) { if ( OrderType ()== OP_BUY ){} if ( OrderType ()== OP_SELL ){} } } 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< 1 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue ); } if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30) { tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed ); } } //+------------------------------------------------------------------+ 이 코드로 무엇을 원하십니까? 무엇을, 무엇이 도움이 되지 않았습니까? [삭제] 2017.01.08 20:08 #603 RichLux : if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY , Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue ); } if (주문판매< 1 && rsi<Urov_30 && rsi1>Urov_30) { tiket= OrderSend ( _Symbol , OP_SELL , Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed ); } 하지만 당신은 필요 if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY , Lot, Ask ,slippage, slBuy , tpBuy, NULL , MagicNumber, 0 , clrBlue ); } if (주문판매< 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; 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= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber) { if ( OrderType ()== OP_BUY ){} if ( OrderType ()== OP_SELL ){} } } 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< 1 && rsi>Urov_70 && rsi1<Urov_70) { tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue ); } if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30) { tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed ); } } //+------------------------------------------------------------------+ Any questions from newcomers [Archive!] Any rookie question, Why it doesn't work [삭제] 2017.01.08 20:09 #604 Artyom Trishkin : 이 코드로 무엇을 원하십니까? 그리고 무엇이 도움이 되지 않았습니까? 코드에 무슨 문제가 있습니까? 각 틱마다 열리지 않아야 합니다. Artyom Trishkin 2017.01.08 20:13 #605 Ibragim Dzhanaev : 코드에 무슨 문제가 있습니까? 그래, 다 틀렸어 결과적으로 아무 것도 하지 않고 반환하지 않는 경우 위치 검색 루프가 필요한 이유는 무엇입니까? 0 값이 1 미만인 변수를 확인하고 모든 틱 에서 열리지 않을 것으로 예상하는 이유는 무엇입니까? 예, 그리고 솔직히 말하면 많은 부조리 ... Mickey Moose 2017.01.08 20:14 #606 나는 같은 문제가 있습니다. 테스터에서는 매 틱마다 열립니다. 일할 수 있는 최소 주문량에 목발을 댔지만 이건 패치일 뿐 그 이상은 아니다 Artyom Trishkin 2017.01.08 20:16 #607 trader781 : 나는 같은 문제가 있습니다. 테스터에서는 매 틱마다 열립니다. 일할 수 있는 최소 주문량에 목발을 댔지만 이건 패치일 뿐 그 이상은 아니다 열린 위치의 수를 올바르게 계산하면 목발이 필요하지 않습니다. [삭제] 2017.01.08 20:18 #608 Artyom Trishkin : 그래, 다 틀렸어 결과적으로 아무 것도 하지 않고 반환하지 않는 경우 위치 검색 루프가 필요한 이유는 무엇입니까? 0 값이 1 미만인 변수를 확인하고 모든 틱 에서 열리지 않을 것으로 예상하는 이유는 무엇입니까? 예, 그리고 솔직히 말하면 많은 부조리 ... 필요에 따라 제출하십시오. 진작 알았다면 했을 텐데. Mickey Moose 2017.01.08 20:20 #609 Artyom Trishkin : 열린 위치의 수를 올바르게 계산하면 목발이 필요하지 않습니다. 그들은 전혀 제한되어서는 안됩니다. 짧은 상태 void OnTick() { if( OrdersTotal ()== 0 ) //+-------------если количество ордеров равно 0 { if (( MathAbs (ma2-ma4)> 100 * _Point ) && ( MathAbs ( Bid -ma3)> 100 * Point ()) && (ma31>ma32>ma33)) //+-----покупка по 6+50 { ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure ); //+------отправка 1 ордера } if (( Bid + 1000 * Point )>ma3 && ( Bid >ma1) && ( Bid >ma2)) //+-------------условие продажи { ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure ); //+-----отправка 1 ордера } if (ticket== 0 ) { return ; } } //+---------------------------------------------------------если уже есть if (FindLastOType()== OP_BUY ) { if ( Ask <=FindLastOrderOpenPrice()-Step* Point ()) //+------------если ордер в минус { ticket= OrderSend ( Symbol (), OP_BUY ,(FindLastLot()*Martin), Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure ); } else if ( Ask >=FindLastOrderOpenPrice()+Step* Point ()) //+------------если ордер в плюс { ticket= OrderSend ( Symbol (), OP_BUY ,(FindLastLot()*Martin), Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure ); } } if (FindLastOType()== OP_SELL ) { if ( Bid >=FindLastOrderOpenPrice()+Step* Point ()) //+------------если ордер в минус { ticket= OrderSend ( Symbol (), OP_SELL ,(FindLastLot()*Martin), Bid , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray ); } else if ( Bid <=FindLastOrderOpenPrice()-Step* Point ()) //+------------если ордер в плюс { ticket= OrderSend ( Symbol (), OP_SELL ,(FindLastLot()*Martin), Bid , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray ); } } Trailingall(); } 시작 단계를 무시할 필요가 없으며 비용은 5 자리 또는 3자리 200입니다. Any questions from newcomers Linear Weighted MA CrossOver I need a HELP [삭제] 2017.01.08 20:25 #610 나는 이것을했고, 이제는 모든 틱마다 열리지 않지만 진입 신호를 건너 뜁니다 ... 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 ); } } //+------------------------------------------------------------------+ Any questions from newcomers Questions from Beginners MQL4 초보자의 질문 MQL4 MT4 1...545556575859606162636465666768...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY , Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue );
}
if (주문판매< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL , Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed );
}
하지만 당신은 필요
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY , Lot, Ask ,slippage, slBuy , tpBuy, NULL , MagicNumber, 0 , clrBlue );
}
if (주문판매< 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;
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= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()== OP_BUY ){}
if ( OrderType ()== OP_SELL ){}
}
}
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< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue );
}
if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed );
}
}
//+------------------------------------------------------------------+
이 코드로 무엇을 원하십니까?
무엇을, 무엇이 도움이 되지 않았습니까?
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY , Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue );
}
if (주문판매< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL , Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed );
}
하지만 당신은 필요
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY , Lot, Ask ,slippage, slBuy , tpBuy, NULL , MagicNumber, 0 , clrBlue );
}
if (주문판매< 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;
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= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()== OP_BUY ){}
if ( OrderType ()== OP_SELL ){}
}
}
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< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
}
if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
}
}
//+------------------------------------------------------------------+
이 코드로 무엇을 원하십니까?
그리고 무엇이 도움이 되지 않았습니까?
코드에 무슨 문제가 있습니까?
각 틱마다 열리지 않아야 합니다.
코드에 무슨 문제가 있습니까?
그래, 다 틀렸어![](https://c.mql5.com/3/114/pardon.gif)
결과적으로 아무 것도 하지 않고 반환하지 않는 경우 위치 검색 루프가 필요한 이유는 무엇입니까?
0 값이 1 미만인 변수를 확인하고 모든 틱 에서 열리지 않을 것으로 예상하는 이유는 무엇입니까?
예, 그리고 솔직히 말하면 많은 부조리 ...
나는 같은 문제가 있습니다. 테스터에서는 매 틱마다 열립니다.
일할 수 있는 최소 주문량에 목발을 댔지만 이건 패치일 뿐 그 이상은 아니다
나는 같은 문제가 있습니다. 테스터에서는 매 틱마다 열립니다.
일할 수 있는 최소 주문량에 목발을 댔지만 이건 패치일 뿐 그 이상은 아니다
그래, 다 틀렸어
결과적으로 아무 것도 하지 않고 반환하지 않는 경우 위치 검색 루프가 필요한 이유는 무엇입니까?
0 값이 1 미만인 변수를 확인하고 모든 틱 에서 열리지 않을 것으로 예상하는 이유는 무엇입니까?
예, 그리고 솔직히 말하면 많은 부조리 ...
필요에 따라 제출하십시오.
진작 알았다면 했을 텐데.
열린 위치의 수를 올바르게 계산하면 목발이 필요하지 않습니다.
그들은 전혀 제한되어서는 안됩니다.
짧은 상태
void OnTick()
{
{
if (( MathAbs (ma2-ma4)> 100 * _Point )
&& ( MathAbs ( Bid -ma3)> 100 * Point ())
&& (ma31>ma32>ma33)) //+-----покупка по 6+50
{
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure ); //+------отправка 1 ордера
}
if (( Bid + 1000 * Point )>ma3 && ( Bid >ma1) && ( Bid >ma2)) //+-------------условие продажи
{
ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure ); //+-----отправка 1 ордера
}
if (ticket== 0 )
{
return ;
}
}
//+---------------------------------------------------------если уже есть
if (FindLastOType()== OP_BUY )
{
if ( Ask <=FindLastOrderOpenPrice()-Step* Point ()) //+------------если ордер в минус
{
ticket= OrderSend ( Symbol (), OP_BUY ,(FindLastLot()*Martin), Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure );
}
else
if ( Ask >=FindLastOrderOpenPrice()+Step* Point ()) //+------------если ордер в плюс
{
ticket= OrderSend ( Symbol (), OP_BUY ,(FindLastLot()*Martin), Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure );
}
}
if (FindLastOType()== OP_SELL )
{
if ( Bid >=FindLastOrderOpenPrice()+Step* Point ()) //+------------если ордер в минус
{
ticket= OrderSend ( Symbol (), OP_SELL ,(FindLastLot()*Martin), Bid , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray );
}
else
if ( Bid <=FindLastOrderOpenPrice()-Step* Point ()) //+------------если ордер в плюс
{
ticket= OrderSend ( Symbol (), OP_SELL ,(FindLastLot()*Martin), Bid , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray );
}
}
Trailingall();
}
나는 이것을했고, 이제는 모든 틱마다 열리지 않지만 진입 신호를 건너 뜁니다 ...
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 );
}
}
//+------------------------------------------------------------------+