MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 38 1...313233343536373839404142434445...1953 새 코멘트 Mickey Moose 2016.12.19 20:17 #371 Vitalie Postolache : Duck은 인수가 제공되기 때문에 함수에 인수를 전달합니다. 제거하는 것이 좋지만 동어반복으로 판명됩니다. 그리고 사이클에서 모든 주문이 다시 계산되는 것은 아닙니다. for (i= OrdersTotal ()- 1 ; i> = 0 ; i--) 그리고 계정 상태, 티켓 비교, 하나의 티켓에 여러 주문이 가능한가요? 수정, 인수 삽입, 전역 범위로 이동, 이제 이 인수가 다른 함수의 입력으로 이미 사용되었다는 경고가 표시됩니다. 티켓 덮어쓰기, 마틴과 마지막 주문부터 작업 그런 다음 'count' 선언을 제거하는 방법은 줄에서 전역 선언을 숨깁니다... 제대로 작동하도록 하는 것이 흥미롭습니다. 지금까지 테스터의 결과에 따르면 어딘가에 꽤 좋은 작업을 제공하고 어딘가에 즉시 "Expert Advisor의 극복 할 수없는 오류" Andrei Sokolov 2016.12.19 20:32 #372 인사말. 다음과 같은 항목을 발견했습니다. if ( OrderSelect (ticket, SELECT_BY_TICKET )) OrderModify (ticket, OrderOpenPrice (), SL, TP, 0 ; 즉, 여기서 조건 연산자 if 대신 bool 유형 의 거래 함수를 즉시 작성했습니다 . 나는 그러한 표기법이 다음과 같다는 것을 올바르게 이해하고 있습니까? if ( OrderSelect (티켓, SELECT_BY_TICKET )) ==true { OrderModify (티켓, OrderOpenPrice (), SL, TP, 0} ; ? 도움말과 교과서를 살펴보았는데 이 형식에 대한 기록을 찾지 못했습니다. 그리고 표현식 대신 다른 유형의 함수를 즉시 작성할 수 있습니까? 그렇다면 알고리즘은 무엇입니까? Vitalie Postolache 2016.12.19 20:49 #373 trader781 : 수정, 인수 삽입, 전역 범위로 이동, 이제 이 인수가 다른 함수의 입력으로 이미 사용되었다는 경고가 표시됩니다. 티켓 덮어쓰기, 마틴과 마지막 주문부터 작업 그런 다음 'count' 선언을 제거하는 방법은 줄에서 전역 선언을 숨깁니다... 제대로 작동하도록 하는 것이 흥미롭습니다. 지금까지 테스터의 결과에 따르면 어딘가에 꽤 좋은 작업을 제공하고 어딘가에 즉시 "Expert Advisor의 극복 할 수없는 오류" 수정 된 버전을 표시하십시오. 그렇지 않으면 코드없이 운세를 얻습니다. Vitalie Postolache 2016.12.19 20:51 #374 spoiltboy : 인사말. 다음과 같은 항목을 발견했습니다. if ( OrderSelect (ticket, SELECT_BY_TICKET )) OrderModify (ticket, OrderOpenPrice (), SL, TP, 0 ; 즉, 여기서 조건 연산자 if 대신 bool 유형 의 거래 함수를 즉시 작성했습니다 . 나는 그러한 표기법이 다음과 같다는 것을 올바르게 이해하고 있습니까? if ( OrderSelect (티켓, SELECT_BY_TICKET )) ==true { OrderModify (티켓, OrderOpenPrice (), SL, TP, 0} ; ? 나는 도움말과 교과서를 모두 보았습니다. 이 형식에 대한 기록을 찾지 못했습니다. 그리고 표현식 대신 다른 유형의 함수를 즉시 작성할 수 있습니까? 그렇다면 알고리즘은 무엇입니까? 이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 작동하지 않습니다. 조건은 대괄호 밖으로 던질 수 없습니다. 그리고 이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET ) ==true) { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 할 수 있습니다. Andrei Sokolov 2016.12.19 21:03 #375 Vitalie Postolache : 이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 작동하지 않습니다. 조건은 대괄호 밖으로 던질 수 없습니다. 그리고 이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET ) ==true) { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 할 수 있습니다. 예, 브래킷으로 밀봉되었습니다. 나머지 질문은 관련이 있습니다. Mickey Moose 2016.12.19 21:12 #376 Vitalie Postolache : 수정 된 버전을 표시하십시오. 그렇지 않으면 코드없이 운세를 얻습니다. 확인. 그는 그가 할 수있는 것을 얻은 것 같습니다. 설명이 이루어졌습니다. 목표는 원하는 대로 작동하지 않는 이유를 이해하는 것입니다. 파일: count.mq4 19 kb [삭제] 2016.12.19 21:16 #377 //+------------------------------------------------------------------+ //| ОТЛОЖКИ.mq4 | //+------------------------------------------------------------------+ extern double StopLoss = 1000 ; //Стоплосс ордера extern double TakeProfit = 1500 ; //Тейкпрофит ордера extern double TrailingStop = 1000 ; // трал extern int Delta = 100 ; //Расстояние от цены для установки ордера extern double LOT = 0.1 ; //Объём позиции extern int Magic = 200 ; //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if (TrailingStop!= 0 ) Trailing(); //ИНДИКАТОР RSI double RSI0= iRSI ( NULL , 0 , 5 , PRICE_CLOSE , 0 ); double RSI1= iRSI ( NULL , 0 , 5 , PRICE_CLOSE , 1 ); int b,s,p,res; double BuyPrice= Ask +Delta* Point ; double SellPrice= Bid -Delta* Point ; for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS )== true ) { if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ; if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++; if ( OrderType ()== OP_BUYSTOP ) b++; if ( OrderType ()== OP_SELLSTOP ) s++; } } double SL,TP; //---- buy stop if (RSI0> 50 &&RSI1< 50 ) { res= OrderSend ( Symbol (), OP_BUYSTOP ,LOT,BuyPrice, 0 ,BuyPrice-StopLoss* Point ,BuyPrice+TakeProfit* Point , "ОТЛОЖКИ" ,Magic, OP_SELLSTOP ,Blue); } //---- sell stop if (RSI0< 50 &&RSI1> 50 ) { res= OrderSend ( Symbol (), OP_SELLSTOP ,LOT,SellPrice, 0 ,SellPrice+StopLoss* Point ,SellPrice-TakeProfit* Point , "ОТЛОЖКИ" ,Magic, OP_BUYSTOP ,Red ); } //---- buy stop делете if (RSI0< 50 &&RSI1> 50 ) { OrderDelete ( OrderTicket ()); } //---- sell stop делете if (RSI0> 50 &&RSI1< 50 ) { OrderDelete ( OrderTicket ()); } //---- return ( 0 ); } //-------------------------------------------------------------------- //---------ФУНКЦИЯ ТРАЛА---------------------------------------------- //-------------------------------------------------------------------- void Trailing(){ for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) if ( OrderSymbol ()== Symbol ()|| OrderMagicNumber ()==Magic) if ( OrderType ()== OP_BUY ) { if (TrailingStop> 0 ) { if ( Bid - OrderOpenPrice ()>TrailingStop) { if ( OrderStopLoss ()< Bid -TrailingStop) { OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -TrailingStop, OrderTakeProfit (), 0 ,Green); } } } } if ( OrderType ()== OP_SELL ) { if (TrailingStop> 0 ) { if (( OrderOpenPrice ()- Ask )>TrailingStop) { if (( OrderStopLoss ()>( Ask +TrailingStop)) || ( OrderStopLoss ()== 0 )) { OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +TrailingStop, OrderTakeProfit (), 0 ,Red); } } } } }} //+------------------------------------------------------------------------------------+ //+------------------------------------------------------------------------------------+--------------------------------------------------------------------+ 주문이 삭제되지 않습니다 도와주세요 Any questions from newcomers Exit Strategy: Stepping Stops 출구 전략: 스테핑 스톱 Mickey Moose 2016.12.19 21:21 #378 주문이 삭제되지 않습니다 도와주세요 미개봉 주문 티켓은 어떻게 구하셨나요? [삭제] 2016.12.19 21:24 #379 trader781 : 미개봉 주문 티켓은 어떻게 구하셨나요? 그렇죠 거기엔 못삽니다 for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS )== true ) { if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ; if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++; if ( OrderType ()== OP_BUYSTOP ) if (сигнал_bue) OrderDelete ( OrderTicket ()); else b++; if ( OrderType ()== OP_SELLSTOP ) if (сигнал_sell) OrderDelete ( OrderTicket ()); else s++; } } Mickey Moose 2016.12.19 21:31 #380 Movlat Baghiyev : 그렇죠 거기엔 못삽니다 for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS )== true ) { if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ; if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++; if ( OrderType ()== OP_BUYSTOP ) if (сигнал_bue) OrderDelete ( OrderTicket ()); else b++; if ( OrderType ()== OP_SELLSTOP ) if (сигнал_sell) OrderDelete ( OrderTicket ()); else s++; } } 나는 그것을 설명하는 방법을 모른다. 그러나 그것은 확실히 걸작입니다. 1...313233343536373839404142434445...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
Duck은 인수가 제공되기 때문에 함수에 인수를 전달합니다. 제거하는 것이 좋지만 동어반복으로 판명됩니다.
그리고 사이클에서 모든 주문이 다시 계산되는 것은 아닙니다.
티켓 덮어쓰기, 마틴과 마지막 주문부터 작업
그런 다음 'count' 선언을 제거하는 방법은 줄에서 전역 선언을 숨깁니다...
제대로 작동하도록 하는 것이 흥미롭습니다.
지금까지 테스터의 결과에 따르면 어딘가에 꽤 좋은 작업을 제공하고 어딘가에 즉시 "Expert Advisor의 극복 할 수없는 오류"
인사말.
다음과 같은 항목을 발견했습니다.
즉, 여기서 조건 연산자 if 대신 bool 유형 의 거래 함수를 즉시 작성했습니다 . 나는 그러한 표기법이 다음과 같다는 것을 올바르게 이해하고 있습니까?
if ( OrderSelect (티켓, SELECT_BY_TICKET )) ==true { OrderModify (티켓, OrderOpenPrice (), SL, TP, 0} ; ?
도움말과 교과서를 살펴보았는데 이 형식에 대한 기록을 찾지 못했습니다.
그리고 표현식 대신 다른 유형의 함수를 즉시 작성할 수 있습니까? 그렇다면 알고리즘은 무엇입니까?
수정, 인수 삽입, 전역 범위로 이동, 이제 이 인수가 다른 함수의 입력으로 이미 사용되었다는 경고가 표시됩니다.
티켓 덮어쓰기, 마틴과 마지막 주문부터 작업
그런 다음 'count' 선언을 제거하는 방법은 줄에서 전역 선언을 숨깁니다...
제대로 작동하도록 하는 것이 흥미롭습니다.
지금까지 테스터의 결과에 따르면 어딘가에 꽤 좋은 작업을 제공하고 어딘가에 즉시 "Expert Advisor의 극복 할 수없는 오류"
인사말.
다음과 같은 항목을 발견했습니다.
즉, 여기서 조건 연산자 if 대신 bool 유형 의 거래 함수를 즉시 작성했습니다 . 나는 그러한 표기법이 다음과 같다는 것을 올바르게 이해하고 있습니까?
if ( OrderSelect (티켓, SELECT_BY_TICKET )) ==true { OrderModify (티켓, OrderOpenPrice (), SL, TP, 0} ; ?
나는 도움말과 교과서를 모두 보았습니다. 이 형식에 대한 기록을 찾지 못했습니다.
그리고 표현식 대신 다른 유형의 함수를 즉시 작성할 수 있습니까? 그렇다면 알고리즘은 무엇입니까?
이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 작동하지 않습니다. 조건은 대괄호 밖으로 던질 수 없습니다.
그리고 이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET ) ==true) { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 할 수 있습니다.
이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 작동하지 않습니다. 조건은 대괄호 밖으로 던질 수 없습니다.
그리고 이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET ) ==true) { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 할 수 있습니다.
수정 된 버전을 표시하십시오. 그렇지 않으면 코드없이 운세를 얻습니다.
확인.
그는 그가 할 수있는 것을 얻은 것 같습니다. 설명이 이루어졌습니다. 목표는 원하는 대로 작동하지 않는 이유를 이해하는 것입니다.
//| ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss = 1000 ; //Стоплосс ордера
extern double TakeProfit = 1500 ; //Тейкпрофит ордера
extern double TrailingStop = 1000 ; // трал
extern int Delta = 100 ; //Расстояние от цены для установки ордера
extern double LOT = 0.1 ; //Объём позиции
extern int Magic = 200 ;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (TrailingStop!= 0 ) Trailing();
//ИНДИКАТОР RSI
double RSI0= iRSI ( NULL , 0 , 5 , PRICE_CLOSE , 0 );
double RSI1= iRSI ( NULL , 0 , 5 , PRICE_CLOSE , 1 );
int b,s,p,res;
double BuyPrice= Ask +Delta* Point ;
double SellPrice= Bid -Delta* Point ;
for ( int i= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS )== true )
{
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++;
if ( OrderType ()== OP_BUYSTOP ) b++;
if ( OrderType ()== OP_SELLSTOP ) s++;
}
}
double SL,TP;
//---- buy stop
if (RSI0> 50 &&RSI1< 50 )
{
res= OrderSend ( Symbol (), OP_BUYSTOP ,LOT,BuyPrice, 0 ,BuyPrice-StopLoss* Point ,BuyPrice+TakeProfit* Point , "ОТЛОЖКИ" ,Magic, OP_SELLSTOP ,Blue);
}
//---- sell stop
if (RSI0< 50 &&RSI1> 50 )
{
res= OrderSend ( Symbol (), OP_SELLSTOP ,LOT,SellPrice, 0 ,SellPrice+StopLoss* Point ,SellPrice-TakeProfit* Point , "ОТЛОЖКИ" ,Magic, OP_BUYSTOP ,Red );
}
//---- buy stop делете
if (RSI0< 50 &&RSI1> 50 )
{
OrderDelete ( OrderTicket ());
}
//---- sell stop делете
if (RSI0> 50 &&RSI1< 50 )
{
OrderDelete ( OrderTicket ());
}
//----
return ( 0 );
}
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------
void Trailing()
{
for ( int i= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== Symbol ()|| OrderMagicNumber ()==Magic)
if ( OrderType ()== OP_BUY )
{
if (TrailingStop> 0 )
{
if ( Bid - OrderOpenPrice ()>TrailingStop)
{
if ( OrderStopLoss ()< Bid -TrailingStop)
{
OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -TrailingStop, OrderTakeProfit (), 0 ,Green);
}
}
}
}
if ( OrderType ()== OP_SELL )
{
if (TrailingStop> 0 )
{
if (( OrderOpenPrice ()- Ask )>TrailingStop)
{
if (( OrderStopLoss ()>( Ask +TrailingStop)) || ( OrderStopLoss ()== 0 ))
{
OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +TrailingStop, OrderTakeProfit (), 0 ,Red);
}
}
}
}
}
}
//+------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------+--------------------------------------------------------------------+
미개봉 주문 티켓은 어떻게 구하셨나요?
{
if ( OrderSelect (i, SELECT_BY_POS )== true )
{
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++;
if ( OrderType ()== OP_BUYSTOP )
if (сигнал_bue) OrderDelete ( OrderTicket ());
else b++;
if ( OrderType ()== OP_SELLSTOP )
if (сигнал_sell) OrderDelete ( OrderTicket ());
else s++;
}
}
그렇죠 거기엔 못삽니다
{
if ( OrderSelect (i, SELECT_BY_POS )== true )
{
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++;
if ( OrderType ()== OP_BUYSTOP )
if (сигнал_bue) OrderDelete ( OrderTicket ());
else b++;
if ( OrderType ()== OP_SELLSTOP )
if (сигнал_sell) OrderDelete ( OrderTicket ());
else s++;
}
}