코딩하는 방법? - 페이지 293 1...286287288289290291292293294295296297298299300...347 새 코멘트 William Snyder 2012.04.06 04:23 #2921 lincoln2012: MQ4를 배우려고 합니다. 내 첫 번째 간단한 프로그램은 2개의 MA가 교차할 때 경고를 표시해야 합니다. 이유를 알 수 없다 이 코드는 작동하지 않습니다. 어떤 도움이라도 정말 감사하겠습니다! 미리 감사드립니다. extern int Period_MA1 = 5; extern int Period_MA2 = 1; 이중 MA1; 이중 MA2; 정수 초기화() { 리턴(0); } //+----------------------------------------------- -------------------+ 정수 초기화() { 리턴(0); } //+----------------------------------------------- -------------------+ 정수 시작() { //------------------------------------------------ -------------------- MA1=iMA(NULL,0,Period_MA1,0,MODE_SMA,PRICE_CLOSE,0); MA2=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,0); //------------------------------------------------ -------------------- 만약 (MA2 == MA1 ) Alert("가격은 동일합니다(",Period_MA2,").");// 경고 반품; } 안녕하세요 링컨2012, 이 Ma Cross의 코드를 확인할 수 있습니다. 파일: macross-1.mq4 7 kb Min Li 2012.04.06 13:46 #2922 lincoln2012: MQ4를 배우려고 합니다. 내 첫 번째 간단한 프로그램은 2개의 MA가 교차할 때 경고를 표시해야 합니다. 이유를 알 수 없다 이 코드는 작동하지 않습니다. } 2개의 표시줄 의 십자가를 코딩하는 핵심은 다음과 같은 개념입니다. 1. 현재 막대 line1>line2이고 이전 막대 line1<line2이면 Up 십자가가 있습니다. 2. 현재 막대가 line1line2이면 아래쪽 십자가가 있습니다. MrPip 2012.04.08 08:28 #2923 mj10: 안녕 글쎄, 나는 Mt4에서 약간의 프로그래밍을 하고 있었지만 재미는 없었지만 오래된 지표의 단순한 편집은 아닙니다. 좋아, 나는 간단한 지표를 만들고 싶지만 그것을하는 방법을 모릅니다. 간단한 표시기 모든 변수의 값이 동일한 경우 값을 확인하기만 하면 모든 변수의 값이 일치하는 지점을 그립니다. 내 간단한 솔루션 변수가 있다고 가정 해 봅시다. 이중 이동avg1; 이중 이동avg12; 이중 이동avg13; 이중 이동avg14; 이중 이동avg15; 이중 이동avg16; 이중 이동avg17; 이중 이동avg18; 이중 이동avg19; 이중 이동avg10; 이중 이동avgall; iStochastic(1)을 사용하는 예제를 제공하는 변수를 선언하지만 모든 지표에 사용할 수 있습니다. moveavg12=iStochastic(1) moveavg13=iStochastic(2) . . . 곧 지금 if (movingavg12=movingavg13=movingavg14,....) (변수 "movingavgall"에 값 입력) // vria에 대해 동일한 값을 입력합니다. 막대에 moveavgall 그리기 애플리케이션 이동 평균 3과 이동 평균 5가 동일한 값을 갖는 위치를 확인하고 싶다고 가정해 보겠습니다. 이 표시기조차도 RSI 1 및 RSI 2 값 = 80인 RSI와 함께 사용할 수 있습니다. 그리고 더 많은 보너스가 추가될 MTF를 추가해도 서면으로 간단해 보이지만 누군가가 도울 수 있기를 바라는 해결책을 찾을 수 없었습니다. 사람들이 내 말을 이해하기를 바랍니다. 감사해요 비교할 값이 있으면 다음과 유사한 코드를 사용합니다. 값이 동일한 지 확인 하려면 ==를 사용합니다. 단일 =는 변수에 값을 할당하는 데 사용됩니다. 2개 이상의 집합을 확인하려면 AND를 나타내기 위해 &&를 사용해야 합니다. 이동 평균 = 0; if ((a == b) && (b == c) && (c == d)) moveavgall = a; 그런 다음 moveavgall에 다음 값이 있는지 확인할 수 있습니다. if (movingavgall != 0) { // 여기서 뭔가를 해라 } Google을 사용하여 메타 트레이더 프로그래밍을 검색하십시오. MT4 프로그래밍에 대한 몇 가지 좋은 자습서를 찾을 수 있습니다. C 프로그래밍에 대한 좋은 책도 도움이 될 것입니다. 로버트 힐(MrPip) How to code? [경고, 주제 닫힘!] 포럼을 순환 연산자 'for' 질문 drhouse7 2012.04.09 10:00 #2924 이 코드를 단순화 안녕하세요 여러분! 다음에서 stringconcatenate 명령을 사용하여 이 코드를 단순화하려고 합니다. ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%"),12, hr1v, DodgerBlue ); 이에: ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%","/\\ ", uitog2v, "%","/\\ ", uitog3v, "%"),12, StringConcatenate (hr1v ,hr2v,hr3v), 다저블루); 누군가가 나를 도울 수 있기를 바랍니다. 친애하는 문서 trend_alexcud_v_2men.mq4 파일: trend_alexcud_v_2men.mq4 22 kb Mladen Rakic 2012.04.09 10:57 #2925 ... 문서 이 모든 요소가 필요한 경우 더 간단하게 작성할 수 있는 방법은 없습니다. dr.house7: 안녕하세요 여러분! 다음에서 stringconcatenate 명령을 사용하여 이 코드를 단순화하려고 합니다. ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%"),12, hr1v, DodgerBlue ); 이에: ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%","/\\ ", uitog2v, "%","/\\ ", uitog3v, "%"),12, StringConcatenate (hr1v ,hr2v,hr3v), 다저블루); 누군가가 나를 도울 수 있기를 바랍니다. 친애하는 문서 trend_alexcud_v_2men.mq4 Georgebaker 2012.04.09 13:58 #2926 방법: 60초마다 알림 예를 들어 60초마다 경고를 표시하는 코드를 어떻게 만들 수 있습니까? 아래에 이 코드를 생성했지만 차트에 첨부할 때부터 1분마다 경고를 표시하고 브로커 시간을 따르도록 하여 예를 들어 매 60초마다 경고합니다. #include #include // exported variables // local variables double PipValue=1; // this variable is here to support 5-digit brokers bool Terminated = false; string LF = "\n"; // use this in custom or utility blocks where you need line feeds int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names int ExpectedTime2 = 0; int init() { NDigits = Digits; ObjectsDeleteAll(); // clear the chart Comment(""); // clear the chart } // Expert start int start() { if (Bars < 10) { Comment("Not enough bars"); return (0); } if (Terminated == true) { Comment("EA Terminated."); return (0); } OnEveryTick1(); } void OnEveryTick1() { if (true == false && true) PipValue = 10; if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10; OncePerMinutes2(); } void OncePerMinutes2() { int datetime800 = TimeLocal(); if (ExpectedTime2 == 0 || datetime800 > ExpectedTime2 + 60) { ExpectedTime2 = datetime800 + 60 * 1; // reset paused time } if (datetime800 >= ExpectedTime2 && datetime800 < ExpectedTime2 + 60) { ExpectedTime2 = datetime800 + 60 * 1; Alert3(); } } void Alert3() { Alert("One minute gone"); } int deinit() { if (true) ObjectsDeleteAll(); } How to code? Fetching iHighest bar value How To make some drhouse7 2012.04.09 14:36 #2927 mladen: Doc 그 모든 요소가 필요하다면 이보다 더 간단하게 작성하는 방법은 없습니다. 음, 이번에는 운이 나쁩니다. 어쨌든 감사합니다. 친애하는 문서 MrPip 2012.04.10 20:53 #2928 두 번째 StringConcatenate 호출에 문제가 있습니다. 3개의 다른 글꼴 이름을 함께 추가하고 있으며 유효한 결과 이름이 없습니다. 로버트 dr.house7: 안녕하세요 여러분! 다음에서 stringconcatenate 명령을 사용하여 이 코드를 단순화하려고 합니다. ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%"),12, hr1v, DodgerBlue ); 이에: ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%","/\\ ", uitog2v, "%","/\\ ", uitog3v, "%"),12, StringConcatenate (hr1v ,hr2v,hr3v), 다저블루); 누군가가 나를 도울 수 있기를 바랍니다. 친애하는 문서 trend_alexcud_v_2men.mq4 outofdebt 2012.05.01 05:45 #2929 EA에 대한 도움이 필요합니다 ... 테스터에서 거래가 종료되지 않음 나는 EA에서 일하고 있지만 내가 무엇을 해도 거래를 성사시킬 수 없습니다. 잘 열리지만 닫고 싶을 때 EA가 닫지 않습니다. 경험 많은 코더 중 한 명이 내가 이 문제를 겪고 있는 이유를 이해할 수 있도록 EA 코드의 일부를 게시할 것입니다. vars 'buyTrade' 및 'sellTrade'는 전체 EA에 적용됩니다. 참고: 저는 길든 짧든 주어진 시간에 하나의 거래만 열리기를 원합니다. 거래는 "항상 인"이므로 긴 신호가 오면 기존 공매도를 마감해야 하며 그 반대의 경우도 마찬가지입니다. 이것은 이것을 하는 것이 아닙니다. 그것이 하는 일은 거래를 시작한 다음 더 많은 스레드를 열고 ... 더 많이 열고 ... 모두가 결국 멈출 때까지 열린 상태로 유지하는 것입니다. 미리 감사드립니다 //---- Is there a new signal? // Buy signal --------------------------------------- //if(buyTrade==false || sellTrade==false) { if (STC_VIDYAprev = 10.00) { if (sellTrade==true) { for (int i = OrdersTotal() - 1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if ( OrderType() == OP_BUY ) { int OldTicket=OrderTicket(); double lots=OrderLots();} RefreshRates(); //OrderSelect() needed ? double symAsk = NormalizeDouble( MarketInfo( Sym, MODE_ASK ), SymDigits ); bool closeSellOrder = OrderClose( OldTicket, lots, symAsk, 0, CLR_NONE ); } sellTrade = false; } if(buyTrade==false) { EnterLong(Sym, Lots, ""); buyTrade = true; } } //else //return(0); // Sell signal --------------------------------------- if (STC_VIDYAprev > 90.00 && STC_VIDYAcur <= 90.00 ) { if (buyTrade==true) { for (int j = OrdersTotal() - 1; j >= 0; j--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if ( OrderType() == OP_SELL ) { int oldTicket=OrderTicket(); double lotts=OrderLots();} RefreshRates(); //OrderSelect() needed ? double symBid = NormalizeDouble( MarketInfo( Sym, MODE_BID ), SymDigits ); bool closeBuyOrder = OrderClose( oldTicket, lotts, symBid, 0, CLR_NONE ); } buyTrade = false; } if(sellTrade==false) { EnterShrt( Sym, Lots, ""); sellTrade = true; } } //else //return(0); How to code? CCI Crossover Strategy (Developing) need to store last Mladen Rakic 2012.05.01 12:50 #2930 ... 부분 코드이므로 매도를 마감할 때 symBid를 symAsk로, 매수 주문을 마감할 때 symAsk를 symBid로 교체해 보십시오(종가를 반전하면 매도를 매도할 수 없으며 매도 호가에 매수를 마감할 수 없습니다) outofdebt: 나는 EA에서 일하고 있지만 내가 무엇을 해도 거래를 성사시킬 수 없습니다. 잘 열리지만 닫고 싶을 때 EA가 닫지 않습니다. 경험 많은 코더 중 한 명이 내가 이 문제를 겪고 있는 이유를 이해할 수 있도록 EA 코드의 일부를 게시할 것입니다. 'buyTrade' 및 'sellTrade' 변수는 전체 EA에 적용됩니다. 참고: 저는 길든 짧든 주어진 시간에 하나의 거래만 열리기를 원합니다. 거래는 "항상 인"이므로 긴 신호가 오면 기존 공매도를 마감해야 하며 그 반대의 경우도 마찬가지입니다. 이것은 이것을 하는 것이 아닙니다. 그것이 하는 일은 거래를 시작한 다음 더 많은 스레드를 열고 ... 더 많이 열고 ... 모두가 결국 멈출 때까지 열린 상태로 유지하는 것입니다. 미리 감사드립니다 //---- Is there a new signal? // Buy signal --------------------------------------- //if(buyTrade==false || sellTrade==false) { if (STC_VIDYAprev = 10.00) { if (sellTrade==true) { for (int i = OrdersTotal() - 1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if ( OrderType() == OP_BUY ) { int OldTicket=OrderTicket(); double lots=OrderLots();} RefreshRates(); //OrderSelect() needed ? double symAsk = NormalizeDouble( MarketInfo( Sym, MODE_ASK ), SymDigits ); bool closeSellOrder = OrderClose( OldTicket, lots, symAsk, 0, CLR_NONE ); } sellTrade = false; } if(buyTrade==false) { EnterLong(Sym, Lots, ""); buyTrade = true; } } //else //return(0); // Sell signal --------------------------------------- if (STC_VIDYAprev > 90.00 && STC_VIDYAcur <= 90.00 ) { if (buyTrade==true) { for (int j = OrdersTotal() - 1; j >= 0; j--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if ( OrderType() == OP_SELL ) { int oldTicket=OrderTicket(); double lotts=OrderLots();} RefreshRates(); //OrderSelect() needed ? double symBid = NormalizeDouble( MarketInfo( Sym, MODE_BID ), SymDigits ); bool closeBuyOrder = OrderClose( oldTicket, lotts, symBid, 0, CLR_NONE ); } buyTrade = false; } if(sellTrade==false) { EnterShrt( Sym, Lots, ""); sellTrade = true; } } //else //return(0); 1...286287288289290291292293294295296297298299300...347 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
MQ4를 배우려고 합니다. 내 첫 번째 간단한 프로그램은 2개의 MA가 교차할 때 경고를 표시해야 합니다. 이유를 알 수 없다
이 코드는 작동하지 않습니다.
어떤 도움이라도 정말 감사하겠습니다! 미리 감사드립니다.
extern int Period_MA1 = 5;
extern int Period_MA2 = 1;
이중 MA1;
이중 MA2;
정수 초기화()
{
리턴(0);
}
//+----------------------------------------------- -------------------+
정수 초기화()
{
리턴(0);
}
//+----------------------------------------------- -------------------+
정수 시작()
{
//------------------------------------------------ --------------------
MA1=iMA(NULL,0,Period_MA1,0,MODE_SMA,PRICE_CLOSE,0);
MA2=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,0);
//------------------------------------------------ --------------------
만약 (MA2 == MA1 )
Alert("가격은 동일합니다(",Period_MA2,").");// 경고
반품;
}안녕하세요 링컨2012,
이 Ma Cross의 코드를 확인할 수 있습니다.
MQ4를 배우려고 합니다. 내 첫 번째 간단한 프로그램은 2개의 MA가 교차할 때 경고를 표시해야 합니다. 이유를 알 수 없다
이 코드는 작동하지 않습니다.
}2개의 표시줄 의 십자가를 코딩하는 핵심은 다음과 같은 개념입니다.
1. 현재 막대 line1>line2이고 이전 막대 line1<line2이면 Up 십자가가 있습니다.
2. 현재 막대가 line1line2이면 아래쪽 십자가가 있습니다.
안녕
글쎄, 나는 Mt4에서 약간의 프로그래밍을 하고 있었지만 재미는 없었지만 오래된 지표의 단순한 편집은 아닙니다. 좋아, 나는 간단한 지표를 만들고 싶지만 그것을하는 방법을 모릅니다.
간단한 표시기 모든 변수의 값이 동일한 경우 값을 확인하기만 하면 모든 변수의 값이 일치하는 지점을 그립니다.
내 간단한 솔루션
변수가 있다고 가정 해 봅시다.
이중 이동avg1;
이중 이동avg12;
이중 이동avg13;
이중 이동avg14;
이중 이동avg15;
이중 이동avg16;
이중 이동avg17;
이중 이동avg18;
이중 이동avg19;
이중 이동avg10;
이중 이동avgall;
iStochastic(1)을 사용하는 예제를 제공하는 변수를 선언하지만 모든 지표에 사용할 수 있습니다.
moveavg12=iStochastic(1)
moveavg13=iStochastic(2)
.
.
.
곧
지금
if (movingavg12=movingavg13=movingavg14,....) (변수 "movingavgall"에 값 입력) // vria에 대해 동일한 값을 입력합니다.
막대에 moveavgall 그리기
애플리케이션
이동 평균 3과 이동 평균 5가 동일한 값을 갖는 위치를 확인하고 싶다고 가정해 보겠습니다.
이 표시기조차도 RSI 1 및 RSI 2 값 = 80인 RSI와 함께 사용할 수 있습니다.
그리고 더 많은
보너스가 추가될 MTF를 추가해도
서면으로 간단해 보이지만 누군가가 도울 수 있기를 바라는 해결책을 찾을 수 없었습니다.
사람들이 내 말을 이해하기를 바랍니다.
감사해요비교할 값이 있으면 다음과 유사한 코드를 사용합니다.
값이 동일한 지 확인 하려면 ==를 사용합니다. 단일 =는 변수에 값을 할당하는 데 사용됩니다.
2개 이상의 집합을 확인하려면 AND를 나타내기 위해 &&를 사용해야 합니다.
이동 평균 = 0;
if ((a == b) && (b == c) && (c == d)) moveavgall = a;
그런 다음 moveavgall에 다음 값이 있는지 확인할 수 있습니다.
if (movingavgall != 0)
{
// 여기서 뭔가를 해라
}
Google을 사용하여 메타 트레이더 프로그래밍을 검색하십시오.
MT4 프로그래밍에 대한 몇 가지 좋은 자습서를 찾을 수 있습니다.
C 프로그래밍에 대한 좋은 책도 도움이 될 것입니다.
로버트 힐(MrPip)
이 코드를 단순화
안녕하세요 여러분!
다음에서 stringconcatenate 명령을 사용하여 이 코드를 단순화하려고 합니다.
ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%"),12, hr1v, DodgerBlue );
이에:
ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%","/\\ ", uitog2v, "%","/\\ ", uitog3v, "%"),12, StringConcatenate (hr1v ,hr2v,hr3v), 다저블루);
누군가가 나를 도울 수 있기를 바랍니다.
친애하는
문서
trend_alexcud_v_2men.mq4
...
문서
이 모든 요소가 필요한 경우 더 간단하게 작성할 수 있는 방법은 없습니다.
안녕하세요 여러분!
다음에서 stringconcatenate 명령을 사용하여 이 코드를 단순화하려고 합니다.
ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%"),12, hr1v, DodgerBlue );
이에:
ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%","/\\ ", uitog2v, "%","/\\ ", uitog3v, "%"),12, StringConcatenate (hr1v ,hr2v,hr3v), 다저블루);
누군가가 나를 도울 수 있기를 바랍니다.
친애하는
문서
trend_alexcud_v_2men.mq4방법: 60초마다 알림
예를 들어 60초마다 경고를 표시하는 코드를 어떻게 만들 수 있습니까?
아래에 이 코드를 생성했지만 차트에 첨부할 때부터 1분마다 경고를 표시하고 브로커 시간을 따르도록 하여 예를 들어 매 60초마다 경고합니다.
#include
#include
// exported variables
// local variables
double PipValue=1; // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n"; // use this in custom or utility blocks where you need line feeds
int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names
int ExpectedTime2 = 0;
int init()
{
NDigits = Digits;
ObjectsDeleteAll(); // clear the chart
Comment(""); // clear the chart
}
// Expert start
int start()
{
if (Bars < 10)
{
Comment("Not enough bars");
return (0);
}
if (Terminated == true)
{
Comment("EA Terminated.");
return (0);
}
OnEveryTick1();
}
void OnEveryTick1()
{
if (true == false && true) PipValue = 10;
if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;
OncePerMinutes2();
}
void OncePerMinutes2()
{
int datetime800 = TimeLocal();
if (ExpectedTime2 == 0 || datetime800 > ExpectedTime2 + 60)
{
ExpectedTime2 = datetime800 + 60 * 1; // reset paused time
}
if (datetime800 >= ExpectedTime2 && datetime800 < ExpectedTime2 + 60)
{
ExpectedTime2 = datetime800 + 60 * 1;
Alert3();
}
}
void Alert3()
{
Alert("One minute gone");
}
int deinit()
{
if (true) ObjectsDeleteAll();
}
Doc 그 모든 요소가 필요하다면 이보다 더 간단하게 작성하는 방법은 없습니다.
음, 이번에는 운이 나쁩니다. 어쨌든 감사합니다.
친애하는
문서
두 번째 StringConcatenate 호출에 문제가 있습니다.
3개의 다른 글꼴 이름을 함께 추가하고 있으며 유효한 결과 이름이 없습니다.
로버트
안녕하세요 여러분!
다음에서 stringconcatenate 명령을 사용하여 이 코드를 단순화하려고 합니다.
ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%"),12, hr1v, DodgerBlue );
이에:
ObjectSetText("uitog1v", StringConcatenate ("/\\ ", uitog1v, "%","/\\ ", uitog2v, "%","/\\ ", uitog3v, "%"),12, StringConcatenate (hr1v ,hr2v,hr3v), 다저블루);
누군가가 나를 도울 수 있기를 바랍니다.
친애하는
문서
trend_alexcud_v_2men.mq4EA에 대한 도움이 필요합니다 ... 테스터에서 거래가 종료되지 않음
나는 EA에서 일하고 있지만 내가 무엇을 해도 거래를 성사시킬 수 없습니다. 잘 열리지만 닫고 싶을 때 EA가 닫지 않습니다.
경험 많은 코더 중 한 명이 내가 이 문제를 겪고 있는 이유를 이해할 수 있도록 EA 코드의 일부를 게시할 것입니다. vars 'buyTrade' 및 'sellTrade'는 전체 EA에 적용됩니다.
참고: 저는 길든 짧든 주어진 시간에 하나의 거래만 열리기를 원합니다. 거래는 "항상 인"이므로 긴 신호가 오면 기존 공매도를 마감해야 하며 그 반대의 경우도 마찬가지입니다.
이것은 이것을 하는 것이 아닙니다. 그것이 하는 일은 거래를 시작한 다음 더 많은 스레드를 열고 ... 더 많이 열고 ... 모두가 결국 멈출 때까지 열린 상태로 유지하는 것입니다.
미리 감사드립니다
// Buy signal ---------------------------------------
//if(buyTrade==false || sellTrade==false) {
if (STC_VIDYAprev = 10.00) {
if (sellTrade==true) {
for (int i = OrdersTotal() - 1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderType() == OP_BUY )
{ int OldTicket=OrderTicket(); double lots=OrderLots();}
RefreshRates(); //OrderSelect() needed ?
double symAsk = NormalizeDouble( MarketInfo( Sym, MODE_ASK ), SymDigits );
bool closeSellOrder = OrderClose( OldTicket, lots, symAsk, 0, CLR_NONE );
}
sellTrade = false;
}
if(buyTrade==false) {
EnterLong(Sym, Lots, "");
buyTrade = true;
}
}
//else
//return(0);
// Sell signal ---------------------------------------
if (STC_VIDYAprev > 90.00 && STC_VIDYAcur <= 90.00 ) {
if (buyTrade==true) {
for (int j = OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderType() == OP_SELL )
{ int oldTicket=OrderTicket(); double lotts=OrderLots();}
RefreshRates(); //OrderSelect() needed ?
double symBid = NormalizeDouble( MarketInfo( Sym, MODE_BID ), SymDigits );
bool closeBuyOrder = OrderClose( oldTicket, lotts, symBid, 0, CLR_NONE );
}
buyTrade = false;
}
if(sellTrade==false) {
EnterShrt( Sym, Lots, "");
sellTrade = true;
}
}
//else
//return(0);...
부분 코드이므로 매도를 마감할 때 symBid를 symAsk로, 매수 주문을 마감할 때 symAsk를 symBid로 교체해 보십시오(종가를 반전하면 매도를 매도할 수 없으며 매도 호가에 매수를 마감할 수 없습니다)
나는 EA에서 일하고 있지만 내가 무엇을 해도 거래를 성사시킬 수 없습니다. 잘 열리지만 닫고 싶을 때 EA가 닫지 않습니다.
경험 많은 코더 중 한 명이 내가 이 문제를 겪고 있는 이유를 이해할 수 있도록 EA 코드의 일부를 게시할 것입니다. 'buyTrade' 및 'sellTrade' 변수는 전체 EA에 적용됩니다.
참고: 저는 길든 짧든 주어진 시간에 하나의 거래만 열리기를 원합니다. 거래는 "항상 인"이므로 긴 신호가 오면 기존 공매도를 마감해야 하며 그 반대의 경우도 마찬가지입니다.
이것은 이것을 하는 것이 아닙니다. 그것이 하는 일은 거래를 시작한 다음 더 많은 스레드를 열고 ... 더 많이 열고 ... 모두가 결국 멈출 때까지 열린 상태로 유지하는 것입니다.
미리 감사드립니다
// Buy signal ---------------------------------------
//if(buyTrade==false || sellTrade==false) {
if (STC_VIDYAprev = 10.00) {
if (sellTrade==true) {
for (int i = OrdersTotal() - 1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderType() == OP_BUY )
{ int OldTicket=OrderTicket(); double lots=OrderLots();}
RefreshRates(); //OrderSelect() needed ?
double symAsk = NormalizeDouble( MarketInfo( Sym, MODE_ASK ), SymDigits );
bool closeSellOrder = OrderClose( OldTicket, lots, symAsk, 0, CLR_NONE );
}
sellTrade = false;
}
if(buyTrade==false) {
EnterLong(Sym, Lots, "");
buyTrade = true;
}
}
//else
//return(0);
// Sell signal ---------------------------------------
if (STC_VIDYAprev > 90.00 && STC_VIDYAcur <= 90.00 ) {
if (buyTrade==true) {
for (int j = OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderType() == OP_SELL )
{ int oldTicket=OrderTicket(); double lotts=OrderLots();}
RefreshRates(); //OrderSelect() needed ?
double symBid = NormalizeDouble( MarketInfo( Sym, MODE_BID ), SymDigits );
bool closeBuyOrder = OrderClose( oldTicket, lotts, symBid, 0, CLR_NONE );
}
buyTrade = false;
}
if(sellTrade==false) {
EnterShrt( Sym, Lots, "");
sellTrade = true;
}
}
//else
//return(0);