그냥 생각하고 생각하고 추가하고 구매했습니다. 결국 주문은 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() 함수를 삽입했는데 컴파일 중에 밝혀졌습니다.
이것은 파이, 또는 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는 디컴파일(해킹)되었으며 이러한 파일은 여기에 환영받지 못합니다...
즉, 기본 브라우저
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", 하나가 있음을 나타냅니다.
주문 유형과 동시에 이 주문의 번호를 호출하는 함수에서 사용할 수 있습니다.
코멘트, 오픈 가격, 손절매 및 이익률 */
}