그냥 생각하고 생각하고 추가하고 구매했습니다. 결국 주문은 BUY뿐만 아니라 SHELL로도 마감됩니다.
마지막에 isCloseLasPosByTake() 함수를 삽입했는데 컴파일 중에 밝혀졌습니다.
2;116;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;104:33;'(' - function definition unexpected
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;109:7;'sy' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;109:14;'sy' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;112:27;'sy' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;112:33;'sy' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;114:15;'op' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;114:37;'op' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;115:17;'mn' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;115:46;'mn' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;116:19;'t' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;117:17;'t' - variable not defined
2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;127:19;'sy' - variable not defined
이것은 파이, 또는 n/p-k GOTSMAN 유화라고 하는 요리사입니다. 주전자를 도와주세요 .... 아니 피터 .......
aaa 코드 자체(예: f-i 시작만)
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start (){//----// Узнаем уровень стопов и спрэдint Spread =MarketInfo(Symbol(),MODE_SPREAD);int StopLevel =MarketInfo(Symbol(),MODE_STOPLEVEL);// Рассчитываем значения средних на 0-ом и 1-ом барахdouble MAF_0 =iMA(NULL,0, MAFP ,0,1,1,0);double MAF_1 =iMA(NULL,0, MAFP ,0,1,1,1);double MAS_0 =iMA(NULL,0, MASP ,0,1,1,0);double MAS_1 =iMA(NULL,0, MASP ,0,1,1,1);// открытие позиции Buy покупкаif( MAF_1 < MAS_1 && MAF_0 > MAS_0 )if( isCloseLastPosByTake (NULL,OP_SELL, MagicNumber )==true){//покупаемif( CheckOrders (OP_SELL)){if( StopLoss <= StopLevel + Spread )double SL =0;else
SL =Ask- StopLoss *Point;if( TakeProfit <= StopLevel - Spread )double TP =0;else
TP =Ask+ TakeProfit *Point;if(!OrderSend(Symbol(),OP_BUY, Lots ,Ask,5, SL , TP ,NULL, MagicNumber ))Print("Не открыт ордер Buy. Ошибка №",GetLastError());}// Открытие позиции Sell продажа if( MAF_1 > MAS_1 && MAF_0 < MAS_0 )if( isCloseLastPosByTake (NULL,OP_BUY, MagicNumber )==true){//продаемif( CheckOrders (OP_BUY)){if( StopLoss <= StopLevel + Spread )
SL =0;else
SL =Bid+ StopLoss *Point;if( TakeProfit <= StopLevel - Spread )
TP =0;else
TP =Bid- TakeProfit *Point;if(!OrderSend(Symbol(),OP_SELL, Lots ,Bid,5, SL , TP ,NULL, MagicNumber ))Print("Не открыт ордер Sell. Ошибка №",GetLastError());}bool isCloseLastPosByTake (string sy =NULL,int op =-1,int mn =-1){datetime t ;double ocp , otp ;int dg , i , j =-1, k =OrdersHistoryTotal();if( sy =="0") sy =Symbol();for( i =0; i < k ; i ++){if(OrderSelect( i , SELECT_BY_POS , MODE_HISTORY )){if(OrderSymbol()== sy || sy ==NULL){if(OrderType()==OP_BUY||OrderType()==OP_SELL){if( op <0||OrderType()== op ){if( mn <0||OrderMagicNumber()== mn ){if( t <OrderCloseTime()){
t =OrderCloseTime();
j = i ;}}}}}}}if(OrderSelect( j , SELECT_BY_POS , MODE_HISTORY )){
dg =MarketInfo( sy ,MODE_DIGITS);if( dg ==0)if(StringFind(OrderSymbol(),"JPY")<0) dg =4;else dg =2;
ocp =NormalizeDouble(OrderClosePrice(), dg );
otp =NormalizeDouble(OrderTakeProfit(), dg );if( ocp == otp )return( True );}return( False );}//----return(0);}//+------------------------------------------------------------------+
하지만 여기 내 문제가 있습니다. 마틴 기반 EA가 있고 그가 원하는 대로 첫 번째 SELL 또는 BUY 주문을 하고 저는 Advisor의 속성에서 BUY 또는 SELL을 선택할 수 있기를 원합니다. 저것들. 예를 들어 BUY와 같은 속성을 입력하면 BUY 주문만 열리며 그 반대의 경우도 마찬가지입니다.
하지만 여기 내 문제가 있습니다. 마틴 기반 EA가 있고 그가 원하는 대로 첫 번째 SELL 또는 BUY 주문을 하고 저는 Advisor의 속성에서 BUY 또는 SELL을 선택할 수 있기를 원합니다. 저것들. 예를 들어 BUY와 같은 속성을 입력하면 BUY 주문만 열리며 그 반대의 경우도 마찬가지입니다.
제 고문을 첨부합니다.
답변해 주시는 모든 분들께 미리 감사드립니다!!!
거의 아무도 응답하지 않을 것입니다. Expert Advisor는 디컴파일(해킹)되었으며 이러한 파일은 여기에 환영받지 못합니다...
MQL 4를 공부하기로 결정했습니다. 찾은 모든 것이 내 열망에 맞지 않습니다. 지금은 이해전문가의 작업 방식을 이해하고 귀하의 아이디어에 맞게 약간 개선하기 위해 다른 사람의 Expert Advisor. (간단하고 작은, 한 페이지) 사용자 정의 기능 코드가 첨부되어 있습니다. 제 찻주전자 특성상 이틀은 못해요이해 - 이 함수는 결과적으로 무엇을 반환하고 Else는 어떤 중첩 조건에 속합니까? - 언제 작동합니까?
내 밀도에 지식의 불꽃을 던지고 싶은 사람이 있습니까?
나는 다음을 얻는다 :
전체 기능의 목적- 이 쌍에 대한 주문이 이미 있는지 여부를 결정하고, 그렇다면 유형을 결정합니다.
이 기능을 시작한 기능은 전환 절차에서 하나와 주문이 선택된 경우,함수는 값 "1"을 반환해야 합니다.주문 - "2" 및 주문이 없는 경우 "-1".
주기는 다음에서 시작됩니다.l_pos_16= 0 . 몇 쌍에 대해 4개의 보류 중인 주문이 있다고 가정해 보겠습니다.고문이 일하고 그들이 첫 번째가 아닌 쌍에 대해 두 개를 포함합니다.
그러나 루프의 첫 번째 반복에서 if ( OrderSelect ( l _ pos _16, SELECT _ BY _ POS , MODE _ TRADES )) 함수 는 목록에서 숫자 "0"이 있는 위치를 확인합니다. 주문하지만 그러한 위치가 없습니다. (t .k 번호 매기기가 위치 번호 1에서 오는 것을 이해합니다) 다른 사람 으로 이전됩니다.fCountOrders ( int & a _ count _0, int & a _ count _4, int & a _ count _8, int & a _ count _12) 에서 완전히 종료되어 반환 값( -1)을 반환합니다.
내 이해로는 전체 기능의 의미가 손실되었습니다. ~에 관계없이이 쌍에 대한 주문의 유무에 따라 결과는 동일해야 합니다.
그러나 Expert Advisor가 실행 중일 때 이 기능은 호출하는 기능이 기대하는 것을 결정하고 제공하며 다음에 따라 작동합니다.결과에서.
나는 다른 것을 이해할 수 없다.반환 (-1) 은 다음에서 작동합니다.
if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
아마도 https://www.mql5.com/ru/forum/107476/page21 기능이 도움이 될 것입니다.
isCloseLastPosByTake() 함수.
이 함수는 take로 마지막 위치를 닫기 위한 플래그를 반환합니다.
플래그가 제기됨 - True - TakeProfit이 작동했습니다.
플래그가 생략됨 - False - 다른 이유로 포지션이 마감되었습니다.
코드의 맨 끝에 함수 자체를 넣습니다. 판매 조건에 추가:
좋은 오후, 저녁 또는 아침입니다.
나는 rid가 쓴 대로 모든 것을 했다. 코드 맨 끝에 함수를 삽입하고 판매 조건에 추가했습니다.
그냥 생각하고 생각하고 추가하고 구매했습니다. 결국 주문은 BUY뿐만 아니라 SHELL로도 마감됩니다.
마지막에 isCloseLasPosByTake() 함수를 삽입했는데 컴파일 중에 밝혀졌습니다.
2;116;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;104:33;'(' - function definition unexpected 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;109:7;'sy' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;109:14;'sy' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;112:27;'sy' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;112:33;'sy' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;114:15;'op' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;114:37;'op' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;115:17;'mn' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;115:46;'mn' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;116:19;'t' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;117:17;'t' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;127:19;'sy' - variable not defined이것은 파이, 또는 n/p-k GOTSMAN 유화라고 하는 요리사입니다. 주전자를 도와주세요 .... 아니 피터 .......
aaa 코드 자체(예: f-i 시작만)
나는 특히 내 메시지에 썼습니다. 이 isCloseLastPosByTake() 함수는 코드의 맨 끝, 시작 함수 외부 에 위치해야 합니다!
그리고 어디에 붙였나요?
그리고 중괄호는 판매 및 구매 조건에 주의하십시오. 거기에는 분명히 충분하지 않습니다 (열린 괄호의 수가 닫힌 괄호의 수와 같은지 확인하십시오). 수정된 판매는 다음과 같습니다.
안녕하세요!!!
도움이 필요하다. 겸손하지 못한 점 사과드립니다.
하지만 여기 내 문제가 있습니다. 마틴 기반 EA가 있고 그가 원하는 대로 첫 번째 SELL 또는 BUY 주문을 하고 저는 Advisor의 속성에서 BUY 또는 SELL을 선택할 수 있기를 원합니다. 저것들. 예를 들어 BUY와 같은 속성을 입력하면 BUY 주문만 열리며 그 반대의 경우도 마찬가지입니다.
MQL4 프로그래밍 불행히도, 나는 아직 배우지 못했습니다.
제 고문을 첨부합니다.
답변해 주시는 모든 분들께 미리 감사드립니다!!!
나는 특히 내 메시지에 썼습니다. 이 isCloseLastPosByTake() 함수는 코드의 맨 끝, 시작 함수 외부 에 위치해야 합니다!
그리고 어디에 붙였나요?
그리고 판매 조건 및 구매 조건 중 중괄호를 주의해야 합니다. 거기에는 분명히 충분하지 않습니다 (열린 괄호의 수가 닫힌 괄호의 수와 같은지 확인하십시오). 수정된 판매는 다음과 같습니다.
나는 f-ii 시작 후에 그것을 붙였다, 나는 그것을 이해한다 .....
그래서 제가 잘못 이해했습니다. 찰싹찰싹 감사합니다 :-))
내가 제대로 이해했다면 전문가 초기화 해제 펑션 블록의 끝에서 } 뒤에 넣어야 한다???? 또는 return(0) 후; f-ii 시작의 맨 끝에 ????????
기다려주셔서 미리 감사드립니다!!!!!!
나는 f-ii 시작 후 그것을 붙였습니다. 나는 그것을 이해합니다 .....
그래서 제가 잘못 이해했습니다. 찰싹찰싹 감사합니다 :-))
내가 제대로 이해했다면 전문가 초기화 해제 펑션 블록의 끝에서 } 뒤에 넣어야 한다???? 또는 return(0) 후; f-ii 시작의 맨 끝에 ????????
기다려주셔서 미리 감사드립니다!!!!!!
외부에 배치해야 합니다. 내부에 없습니다. 기능이지만 별개의 독립적인 기능입니다.
이와 같이 :
고문이 그런 조건에서 일할지 확신이 서지 않습니다. 왜냐하면 첫 번째 위치는 열 수 없습니다 ...
구매 조건이나 판매 조건에서 isCloseLastPosByTake() 함수를 제거해야 합니다.
그러면 고문이 일할 것입니다.
안녕하세요!!!
하지만 여기 내 문제가 있습니다. 마틴 기반 EA가 있고 그가 원하는 대로 첫 번째 SELL 또는 BUY 주문을 하고 저는 Advisor의 속성에서 BUY 또는 SELL을 선택할 수 있기를 원합니다. 저것들. 예를 들어 BUY와 같은 속성을 입력하면 BUY 주문만 열리며 그 반대의 경우도 마찬가지입니다.
제 고문을 첨부합니다.
답변해 주시는 모든 분들께 미리 감사드립니다!!!
거의 아무도 응답하지 않을 것입니다. Expert Advisor는 디컴파일(해킹)되었으며 이러한 파일은 여기에 환영받지 못합니다...
WinExec("C:\\Program Files\\Opera\\opera.exe http://www.mail.ru",2);안녕하세요! 이것은 특정 브라우저에서 링크를 실행하는 것이지만 기본적으로 동일한 링크를 실행하는 방법은 무엇입니까?즉, 기본 브라우저
ShellExecute, "열기" 명령, emnip.
MQL 4를 공부하기로 결정했습니다. 찾은 모든 것이 내 열망에 맞지 않습니다. 지금은 이해 전문가의 작업 방식을 이해하고 귀하의 아이디어에 맞게 약간 개선하기 위해 다른 사람의 Expert Advisor. (간단하고 작은, 한 페이지) 사용자 정의 기능 코드가 첨부되어 있습니다. 제 찻주전자 특성상 이틀은 못해요 이해 - 이 함수는 결과적으로 무엇을 반환하고 Else는 어떤 중첩 조건에 속합니까? - 언제 작동합니까?
내 밀도에 지식의 불꽃을 던지고 싶은 사람이 있습니까?
나는 다음을 얻는다 :
전체 기능의 목적 - 이 쌍에 대한 주문이 이미 있는지 여부를 결정하고, 그렇다면 유형을 결정합니다.
이 기능을 시작한 기능은 전환 절차에서 하나와 주문이 선택된 경우, 함수는 값 "1"을 반환해야 합니다. 주문 - "2" 및 주문이 없는 경우 "-1".
주기는 다음에서 시작됩니다. l_pos_16 = 0 . 몇 쌍에 대해 4개의 보류 중인 주문이 있다고 가정해 보겠습니다. 고문이 일하고 그들이 첫 번째가 아닌 쌍에 대해 두 개를 포함합니다.
그러나 루프의 첫 번째 반복에서 if ( OrderSelect ( l _ pos _16, SELECT _ BY _ POS , MODE _ TRADES )) 함수 는 목록에서 숫자 "0"이 있는 위치를 확인합니다. 주문하지만 그러한 위치가 없습니다. (t .k 번호 매기기가 위치 번호 1에서 오는 것을 이해합니다) 다른 사람 으로 이전됩니다. fCountOrders ( int & a _ count _0, int & a _ count _4, int & a _ count _8, int & a _ count _12) 에서 완전히 종료되어 반환 값 ( -1)을 반환합니다.
내 이해로는 전체 기능의 의미가 손실되었습니다. ~에 관계없이 이 쌍에 대한 주문의 유무에 따라 결과는 동일해야 합니다.
그러나 Expert Advisor가 실행 중일 때 이 기능은 호출하는 기능이 기대하는 것을 결정하고 제공하며 다음에 따라 작동합니다. 결과에서.
나는 다른 것을 이해할 수 없다. 반환 (-1) 은 다음에서 작동합니다.
if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
또는 같은 ~에 if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_N) {
코드 기능 :
int fCountOrders(int &a_count_0, int &a_count_4, int &a_count_8, int &a_count_12)
a_count_0 = 0;
a_count_4 = 0;
a_count_8 = 0;
a_count_12 = 0;
gi_252 = 0;
(int l_pos_16 = 0; l_pos_16 < OrdersTotal(); l_pos_16++) {
if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_N) {
스위치(주문 유형()) 케이스 OP_BUY:
a_count_0++;
gi_252 = 1;
g_ticket_268 = OrderTicket();
gs_272 = 주문 주석();
g_ord_open_price_256 = OrderOpenPrice();
g_ord_stoploss_288 = 주문 중지 손실();
g_ord_takeprofit_296 = OrderTakeProfit();
부서지다;
케이스 OP_SELL:
a_count_4++;
gi_252 = -1;
g_ticket_268 = OrderTicket();
gs_272 = 주문 주석();
g_ord_open_price_256 = OrderOpenPrice();
g_ord_stoploss_288 = 주문 중지 손실();
g_ord_takeprofit_296 = OrderTakeProfit();
부서지다;
사례 OP_BUYSTOP:
a_count_8++;
부서지다;
케이스 OP_SELLSTOP:
a_count_12++;
}
}
} 그렇지 않으면 반환(-1);
}
반환 (a_count_0 + a_count_4 + a_count_8 + a_count_12);
/* 함수가 정상적으로 실행되는 동안 변수에 하나가 반환됩니다. 한 경우 에 그리고 다른 모든 경우 "0", 하나가 있음을 나타냅니다.
주문 유형과 동시에 이 주문의 번호를 호출하는 함수에서 사용할 수 있습니다.
코멘트, 오픈 가격, 손절매 및 이익률 */
}