순서대로 응답해 주십시오. 히스토그램으로 표시되는 표시기가 있습니다. 가입시나 재접속시에는 낮아진 값을 보여줍니다. 첫 번째 시작의 조건을 배열의 0번째 셀을 0으로 설정합니다. 그리고 인터넷에 넣어 - 도움이되지 않았습니다. 나는 처음에 그것을 재설정합니다 - 표준. (가입에 관한 것입니다). 네트워크 중단에 대해. 시작 시 조건 설정: if( GetLastError()==6 )zas[0]=0.0; - 도움이 되지 않습니다. 나는 그 질문의 진부한 냄새를 맡았지만 나 자신은 길을 잃었습니다. 분명히 지식의 격차입니다.
dikson1976-1 : 순서대로 응답해 주십시오. 히스토그램으로 표시되는 표시기가 있습니다. 가입시나 재접속시에는 낮아진 값을 보여줍니다. 첫 번째 시작의 조건을 배열의 0번째 셀을 0으로 설정합니다. 그리고 인터넷에 넣어 - 도움이되지 않았습니다. 나는 처음에 그것을 재설정합니다 - 표준. (가입에 관한 것입니다). 네트워크 중단에 대해. 시작 시 조건 설정: if(GetLastError()==6)zas[0]=0.0; - 도움이 되지 않습니다. 나는 그 질문의 진부한 냄새를 맡았지만 나 자신은 길을 잃었습니다. 분명히 지식의 격차입니다.
돕다! 외부 채널 표시기에 대한 어드바이저 코드가 있습니다(채널의 상한에 도달하면 거래가 판매를 위해 열리고 하한에 도달하면 역순으로 구매하기 위해 닫힙니다). 알 수 없는 이유로 거래가 열리지 않고 오류를 찾을 수 없습니다. 다른 채널 표시기와 완벽하게 작동합니다. 모든 픽업된 버퍼를 즉시 규정합니다.
코드를 첨부합니다
extern 이중 랏 = 0.1; extern string Сomment = "TMA Canal2"; 외부 정수 TakeProfit = 20; extern int 손절매 = 20; extern int 미끄러짐 = 2; // 미끄러짐 외부 정수 매직 = 124;
extern string Indi = "표시 데이터"; extern string TimeFrame = " 현재 시간 프레임"; extern int TMAPeriod = 56; extern int 가격 = PRICE_CLOSE; 외부 이중 ATRMultiplier = 2.0; extern int ATRPPeriod = 100; extern 이중 추세 임계값 = 0.5; 외부 부울 ShowCenterLine = false;
이중 PriceHigh, PriceLow, SL, TP; 인트 티켓;
//+----------------------------------------------- --------------------+ //| 전문가 초기화 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { if (Digits ==3 || Digits ==3) // 5자리 브로커의 경우 { 이익을 취하십시오 *= 10; 손절매 *= 10; 미끄러짐 *= 10; } 리턴(0); }
//+----------------------------------------------- --------------------+ //| 오픈 포지션 계산 | //+----------------------------------------------- --------------------+ int CalculateCurrentOrders(문자열 기호) { 구매 = 0, 판매 = 0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 중단; if(OrderSymbol()==Symbol() && OrderMagicNumber()==124) { if(OrderType()==OP_BUY) 구매++; if(OrderType()==OP_SELL) 판매++; } } //---- 반품 주문량 if(매수>0) 반환(매수); 그렇지 않으면 반환(-판매); }
//+----------------------------------------------- --------------------+ //| 미결 주문 조건 확인 | //+----------------------------------------------- --------------------+ 무효 CheckForOpen() { 이중 PriceHigh, PriceLow; 인트 티켓; //---- 새 막대의 첫 번째 틱에 대해서만 거래를 시작합니다. if(볼륨[0]>1) 반환;
{ ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"TMA Canal2",124,0,Blue); 반품; } //---- } //+----------------------------------------------- --------------------+ //| 마감 주문 조건 확인 | //+----------------------------------------------- --------------------+ 무효 CheckForClose() { 이중 PriceHigh, PriceLow; //---- 새 막대의 첫 번째 틱에 대해서만 거래를 시작합니다. if(볼륨[0]>1) 반환;
//+----------------------------------------------- --------------------+ //| 시작 기능 | //+----------------------------------------------- --------------------+ 무효 시작() { //---- 내역 및 거래 확인 if(Bars<100 || IsTradeAllowed()==false) 반환; //---- 현재 기호로 미결 주문 계산 if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); 그렇지 않으면 CheckForClose(); //---- } //+----------------------------------------------- --------------------+
친애하는 모든 프로그래머에게 인사드립니다. 저는 mql4를 처음 사용하고 SL 및 TP로 작업하는 방법을 알고 있지만 표시기의 반대 신호에서 주문을 마감해야 할 때 문제가 발생하여 어떻게 OrderSelect() 주문 계산 기능이 작동합니다. 여기에 스토캐스틱에 따라 작동하는 간단한 Expert Advisor 코드의 일부가 있습니다. 막대 1과 2 사이에서 과매도 및 교차, 매수를 연 다음 과매수 및 교차, 매수를 마감하고 즉시 매도를 여는 등 나는 사이클이 주문을 정렬하는 데 사용된다는 것을 알고 있습니다. 코드에 있지만 거래 프로세스 중에 밝혀지기 때문에 주문이 열리고 즉시 닫힙니다. 구매를 여는 조건이 판매를 종료하는 조건과 일치하며, 그에게 이렇게 해서는 안 된다고 설명하는 방법을 이해할 수 없습니다. 설명 부탁드립니다.
친애하는 모든 프로그래머에게 인사드립니다. 저는 mql4를 처음 사용하고 SL 및 TP로 작업하는 방법을 알고 있지만 표시기의 반대 신호에서 주문을 마감해야 할 때 문제가 발생하여 어떻게 OrderSelect() 주문 계산 기능이 작동합니다. 여기에 스토캐스틱에 따라 작동하는 간단한 Expert Advisor 코드의 일부가 있습니다. 막대 1과 2 사이에서 과매도 및 교차, 매수를 연 다음 과매수 및 교차, 매수를 마감하고 즉시 매도를 여는 등 나는 사이클이 주문을 정렬하는 데 사용된다는 것을 알고 있습니다. 코드에 있지만 거래 프로세스 중에 밝혀지기 때문에 주문이 열리고 즉시 닫힙니다. 구매를 여는 조건이 판매를 종료하는 조건과 일치하며, 그에게 이렇게 해서는 안 된다고 설명하는 방법을 이해할 수 없습니다. 설명 부탁드립니다.
borilunad 힌트를 주셔서 감사합니다. 다시 수정했습니다. 그런 다음 쓰레기가 없도록 따옴표가 있는 메시지를 삭제할 수도 있습니다.
순서대로 응답해 주십시오. 히스토그램으로 표시되는 표시기가 있습니다. 가입시나 재접속시에는 낮아진 값을 보여줍니다. 첫 번째 시작의 조건을 배열의 0번째 셀을 0으로 설정합니다. 그리고 인터넷에 넣어 - 도움이되지 않았습니다. 나는 처음에 그것을 재설정합니다 - 표준. (가입에 관한 것입니다). 네트워크 중단에 대해. 시작 시 조건 설정: if(GetLastError()==6)zas[0]=0.0; - 도움이 되지 않습니다. 나는 그 질문의 진부한 냄새를 맡았지만 나 자신은 길을 잃었습니다. 분명히 지식의 격차입니다.
코드가 없습니다.
도졸 :
역순으로 순서를 살펴보십시오.
친구, 도와주세요. 선택한 통화 쌍에 대한 모든 주문을 마감해야 합니다. 다음은 내가 작성한 것입니다(EA 코드의 일부).
int 자크리트_vse() ...
SRC를 사용하여 포럼에 코드 삽입
코드를 작성하는 동안 이미 이해했지만, 코드를 추가했습니다. 여기에 게시하겠습니다. 아마도 흥미로운 것을 찾을 수 있을 것입니다.
친구, 도와주세요. 선택한 통화 쌍에 대한 모든 주문을 마감해야 합니다. 다음은 내가 작성한 것입니다(EA 코드의 일부).
모든 것이 이미 당신을 위해 발명되었는데 왜 바퀴를 재발명하세요. 예를 들어 . 이것을 잊지 마세요 .
돕다! 외부 채널 표시기에 대한 어드바이저 코드가 있습니다(채널의 상한에 도달하면 거래가 판매를 위해 열리고 하한에 도달하면 역순으로 구매하기 위해 닫힙니다). 알 수 없는 이유로 거래가 열리지 않고 오류를 찾을 수 없습니다. 다른 채널 표시기와 완벽하게 작동합니다. 모든 픽업된 버퍼를 즉시 규정합니다.
코드를 첨부합니다
extern 이중 랏 = 0.1;
extern string Сomment = "TMA Canal2";
외부 정수 TakeProfit = 20;
extern int 손절매 = 20;
extern int 미끄러짐 = 2; // 미끄러짐
외부 정수 매직 = 124;
extern string Indi = "표시 데이터";
extern string TimeFrame = " 현재 시간 프레임";
extern int TMAPeriod = 56;
extern int 가격 = PRICE_CLOSE;
외부 이중 ATRMultiplier = 2.0;
extern int ATRPPeriod = 100;
extern 이중 추세 임계값 = 0.5;
외부 부울 ShowCenterLine = false;
이중 PriceHigh, PriceLow, SL, TP;
인트 티켓;
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
if (Digits ==3 || Digits ==3) // 5자리 브로커의 경우
{
이익을 취하십시오 *= 10;
손절매 *= 10;
미끄러짐 *= 10;
}
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 오픈 포지션 계산 |
//+----------------------------------------------- --------------------+
int CalculateCurrentOrders(문자열 기호)
{
구매 = 0, 판매 = 0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 중단;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==124)
{
if(OrderType()==OP_BUY) 구매++;
if(OrderType()==OP_SELL) 판매++;
}
}
//---- 반품 주문량
if(매수>0) 반환(매수);
그렇지 않으면 반환(-판매);
}
//+----------------------------------------------- --------------------+
//| 미결 주문 조건 확인 |
//+----------------------------------------------- --------------------+
무효 CheckForOpen()
{
이중 PriceHigh, PriceLow;
인트 티켓;
//---- 새 막대의 첫 번째 틱에 대해서만 거래를 시작합니다.
if(볼륨[0]>1) 반환;
PriceHigh = iCustom(Symbol(), 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 1, 0);
PriceLow = iCustom(Symbol(), 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 2, 0);
if(Open[1]>PriceHigh || Close[1]>PriceHigh || High[1]>PriceHigh && Ask<=PriceHigh)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"TMA Canal2",124,0,Red);
반품;
}
//---- 구매 조건
if(오픈[1]<PriceLow || Close[1]<PriceLow || Low[1]<PriceLow && Bid>=PriceLow)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"TMA Canal2",124,0,Blue);
반품;
}
//----
}
//+----------------------------------------------- --------------------+
//| 마감 주문 조건 확인 |
//+----------------------------------------------- --------------------+
무효 CheckForClose()
{
이중 PriceHigh, PriceLow;
//---- 새 막대의 첫 번째 틱에 대해서만 거래를 시작합니다.
if(볼륨[0]>1) 반환;
PriceHigh = iCustom(Symbol(), 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 1, 0);
PriceLow = iCustom(Symbol(), 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 2, 0);
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 중단;
if(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) 계속;
//---- 주문 유형 확인
if(주문유형()==OP_BUY)
{
if(Open[1]>PriceHigh || Close[1]>PriceHigh || High[1]>PriceHigh) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
부서지다;
}
if(주문 유형()==OP_SELL)
{
if(Open[1]<PriceLow || Close[1]<PriceLow || Low[1]<PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
부서지다;
}
}
//----
}
//+----------------------------------------------- --------------------+
//| 시작 기능 |
//+----------------------------------------------- --------------------+
무효 시작()
{
//---- 내역 및 거래 확인
if(Bars<100 || IsTradeAllowed()==false) 반환;
//---- 현재 기호로 미결 주문 계산
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
그렇지 않으면 CheckForClose();
//----
}
//+----------------------------------------------- --------------------+
친애하는 모든 프로그래머에게 인사드립니다. 저는 mql4를 처음 사용하고 SL 및 TP로 작업하는 방법을 알고 있지만 표시기의 반대 신호에서 주문을 마감해야 할 때 문제가 발생하여 어떻게 OrderSelect() 주문 계산 기능이 작동합니다. 여기에 스토캐스틱에 따라 작동하는 간단한 Expert Advisor 코드의 일부가 있습니다. 막대 1과 2 사이에서 과매도 및 교차, 매수를 연 다음 과매수 및 교차, 매수를 마감하고 즉시 매도를 여는 등 나는 사이클이 주문을 정렬하는 데 사용된다는 것을 알고 있습니다. 코드에 있지만 거래 프로세스 중에 밝혀지기 때문에 주문이 열리고 즉시 닫힙니다. 구매를 여는 조건이 판매를 종료하는 조건과 일치하며, 그에게 이렇게 해서는 안 된다고 설명하는 방법을 이해할 수 없습니다. 설명 부탁드립니다.
SRC 버튼을 사용 하여 코드를 삽입하십시오 !
작성한 대로 문서 를 사용하여 추가하십시오!
복사한 경우 개선 사항이나 작업 에 대해 작성자에게 문의하십시오!
다시 추가하겠습니다. 글쎄, 몇 번이나 말했는지, 코드를 삽입하려면 맨 윗줄에 있는 버튼을 사용하십시오.
그리고 코드 작성 스타일 을 고수하는 것이 바람직합니다.... 바람직하지만 필수는 아닙니다. 그러나 가장 쉽게 이해할 수 있는 코드가 답이 될 가능성이 높습니다.
친애하는 모든 프로그래머에게 인사드립니다. 저는 mql4를 처음 사용하고 SL 및 TP로 작업하는 방법을 알고 있지만 표시기의 반대 신호에서 주문을 마감해야 할 때 문제가 발생하여 어떻게 OrderSelect() 주문 계산 기능이 작동합니다. 여기에 스토캐스틱에 따라 작동하는 간단한 Expert Advisor 코드의 일부가 있습니다. 막대 1과 2 사이에서 과매도 및 교차, 매수를 연 다음 과매수 및 교차, 매수를 마감하고 즉시 매도를 여는 등 나는 사이클이 주문을 정렬하는 데 사용된다는 것을 알고 있습니다. 코드에 있지만 거래 프로세스 중에 밝혀지기 때문에 주문이 열리고 즉시 닫힙니다. 구매를 여는 조건이 판매를 종료하는 조건과 일치하며, 그에게 이렇게 해서는 안 된다고 설명하는 방법을 이해할 수 없습니다. 설명 부탁드립니다.
borilunad 힌트를 주셔서 감사합니다. 다시 수정했습니다. 그런 다음 쓰레기가 없도록 따옴표가 있는 메시지를 삭제할 수도 있습니다.
if (buy1sOpen()) { OrderSend ( Symbol (), OP_BUY, lots, Ask, Slippage, 0 , 0 , "" , magic, 0 , Blue); } if (sell1sOpen()) { OrderSend ( Symbol (), OP_SELL, lots, Bid, Slippage, 0 , 0 , "" , magic, 0 , Red); } for ( int i= 0 ; i< OrdersTotal (); i++) { OrderSelect (i,SELECT_BY_POS); if (buy1sClose()) { OrderClose(i, lots, Ask, Slippage, Blue); } if (sell1sClose()) { OrderClose(i, lots, Bid, Slippage, Red); } } } } bool buy1sOpen() { Sm1= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_MAIN, 1 ); Ss1= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_SIGNAL, 1 ); Sm2= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_MAIN, 2 ); Ss2= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_SIGNAL, 2 ); if (Sm1>Ss1 && Sm2<Ss2 && Sm1< 30 ) return ( true ); return ( false ); } bool sell1sOpen() { Sm1= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_MAIN, 1 ); Ss1= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_SIGNAL, 1 ); Sm2= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_MAIN, 2 ); Ss2= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_SIGNAL, 2 ); if (Sm1<Ss1 && Sm2>Ss2 && Sm1> 70 ) return ( true ); return ( false ); } bool buy1sClose() { Sm1= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_MAIN, 1 ); Ss1= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_SIGNAL, 1 ); Sm2= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_MAIN, 2 ); Ss2= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_SIGNAL, 2 ); if (Sm1<Ss1 && Sm2>Ss2 && Sm1> 70 ) return ( true ); return ( false ); } bool sell1sClose() { Sm1= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_MAIN, 1 ); Ss1= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_SIGNAL, 1 ); Sm2= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_MAIN, 2 ); Ss2= iStochastic ( NULL , 0 , 13 , 5 , 5 , MODE_SMA , 0 ,MODE_SIGNAL, 2 ); if (Sm1>Ss1 && Sm2<Ss2 && Sm1< 30 ) return ( true ); return ( false ); }