코딩하는 방법? - 페이지 58

 

고쳤다고 생각했는데 아니네요.

내가 하려고 하는 것은 차트와 저널에 현재 포지션을 여는 데 사용된 입력 조건에 대해 설명하는 것입니다.

내가 지금 잠시 동안 시도했지만 운이없고 생각만큼 쉽지 않기 때문에 이전에 수행 한 적이 있으며 어떻게 수행합니까?

아래는 나의 최근 시도입니다.

어떤 도움이라도 좋을 것입니다

Buysig = 긴 || 롱2 || 롱3 || 롱4;

Sellsig = 짧은 || 짧은2 || 쇼트3 || 쇼트4;

닫기 구매 = 판매 신호;

닫기 판매 = 구매;

if (curprof>=AccountEquity()*ProfitExit/100.0) {

종료 = 사실;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=참;

}

}

무효 CheckForOpen() {

정수 res,tr;

//---- 판매 조건

co=CalculateCurrentOrders(Symbol());

if(판매 시그 && 라스트 시그!=-1) {

if ( Short == true)Print(" 짧은 신호가 찍혔습니다 ");

if ( Short2 == true)Print(" Short2 신호를 가져옴 ");

if ( Short3 == true)Print(" Short3 신호를 가져옴 ");

if ( Short4 == true)Print(" Short4 신호가 찍힘 ");

co=CalculateCurrentOrders(Symbol());

if (co==0) {

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

lastsig=-1;

마지막=시간[0];

반품;

}

//---- 구매 조건

co=CalculateCurrentOrders(Symbol());

if(구매 && 지속!=1) {

if ( Long == true) Print(" 긴 신호가 수신됨 ");

if ( Long2 == true)Print(" Long2 신호를 가져옴 ");

if ( Long3 == true) Print(" Long3 신호가 수신됨 ");

if ( Long4 == true)Print(" Long4 신호가 수신됨 ");

co=CalculateCurrentOrders(Symbol());

if (co==0) {

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

마지막=시간[0];

lastsig=1;

반품;

}

}

bool CloseAtMarket(int 티켓, 이중 추첨) {

//내결함성 시장 주문 마감

부울 브레스=거짓; 정수 tr;

시도 = 0;

동안 (!bres && 시도<OrderTriesNumber) {

새로 고침 비율();

bres=OrderClose(티켓,랏,OrderClosePrice(),슬립페이지,화이트);

시도++;

tr=0; 동안 (tr<5 && !IsTradeAllowed()) { tr++; 수면(2000); }

}

if (!bres) Print("오더 닫기 오류: ",ErrorDescription(GetLastError()));

}

int OpenStop(int 모드, 이중 로트, 이중 prc, int SL, int TP) {

int res,tr,col;

문자열 메일;

이중 공개 가격, sl, tp, stlev;

시도 = 0;

stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*포인트;

동안 (res<=0 && 시도<OrderTriesNumber) {

tr=0; 동안 (tr<5 && !IsTradeAllowed()) { tr++; 수면(2000); }

새로 고침 비율();

if (모드==OP_SELLSTOP) {

if (prc<=Bid-stlev) openprice=prc;

else openprice=입찰가;

if (SL>0) sl=openprice+SL*Point;

if (TP>0) tp=openprice-TP*Point;

col=빨간색;

} 또 다른

if (모드==OP_BUYSTOP) {

if (prc>=Ask+stlev) openprice=prc;

else openprice=문의+stlev;

if (SL>0) sl=openprice-SL*Point;

if (TP>0) tp=openprice+TP*Point;

col=파란색;

} 그렇지 않으면 반환;

Print(Ask," ",Bid," ",Symbol()," ",mode," ",lot," ", openprice," ",sl," ",tp," ");

res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+"_"+ MagicNumber, MagicNumber,0,col);

시도++;

}

if (res<=0) Print(" 대기 중인 주문 열기 오류: ",ErrorDescription(GetLastError()));

반환(res);

 

이 EA는 컴파일조차 되지 않습니다. 손절매는 가장 걱정할 필요가 없습니다. 임의의 공백이 있거나 첫 글자가 대문자가 아닌 5개의 변수가 있습니다!

 
jturns23:
이 EA는 컴파일조차 되지 않습니다. 손절매는 가장 걱정할 필요가 없습니다. 임의의 공백이 있거나 첫 글자가 대문자가 아닌 5개의 변수가 있습니다!

여기 수정 버전이 있습니다.

그러나 이것은 코드에 롱/숏 포지션을 여는 방법을 결정하는 논리가 없기 때문에 여전히 어떤 포지션도 열 수 없습니다.

 
 

이 EA에 대한 도움말

Michel:
이 CHingSMARoonCLK는 누구입니까?

내 기억으로는 이 EA는 elCactus의 10p3에 불과하지만 내가 틀렸을 수도 있습니다...

스레드를 확인하면 원하는 것을 찾을 수 있습니다. https://www.mql5.com/en/forum/174975

좋아.. 이제 문제는 이 EA에 손절매를 넣을 수 없다는 것입니다. 코드는 무엇입니까? 나를 도울 수 있나요? 감사합니다

 

거래 없음 - 코드 도움말

여러분, 안녕하세요,

코드를 수정하려고 시도했지만 많은 노력을 기울인 후에도 여전히 올바르게 얻을 수 없었습니다. 여러분 중 누군가가 마음에 들지 않으면 이것을 볼 수 있습니다. 감사합니다.

가격 범위가 이전 거래와 동일한 영역에 있으면 다음 거래를 중지하는 것이 좋습니다. 롱 트레이드는 마지막 OPEN POSITION 롱 트레이드 영역을 확인 하고 숏 트레이드는 마지막 OPEN POSITION 숏 트레이드 영역을 확인합니다.

즉. 첫 번째 LONG이 1.4000이면 두 번째 LONG은 가격이 1.3990 미만 및 1.4010 초과 영역(20핍 영역)을 벗어나는 경우에만 트리거됩니다.

모두 감사합니다..

//+----------------------------------------------- -------------------------------------------------- -----------------------+

//| 횡보 시장 필터링 - 유사 가격대의 다중 거래 방지 및 거래 금지 구역 생성 |

//+----------------------------------------------- -------------------------------------------------- -----------------------+

외부 정수 Zone1 = -10; // (하단 영역)

외부 정수 Zone2 = 10; // (상단 영역)

// 이전 거래에서 -10과 +10 사이의 거래 영역 없음

bool CheckZone(int 유형)

{

int cnt = OrdersTotal();

for (int i=0; i < cnt; i++)

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 계속

if (OrderSymbol() != Symbol()) 계속;

if (OrderMagicNumber() != Magic) 계속;

if (OrderType() != 유형) 계속;

if (유형 == OP_BUY)

{

if( (입찰 - OrderOpenPrice()) > Zone1*Point && (Bid - OrderOpenPrice()) < Zone2*Point ) return(false);

}

if (유형 == OP_SELL)

{

if( (OrderOpenPrice()-Ask) > Zone1*Point && (OrderOpenPrice()-Ask) < Zone2*Point ) return(false);

}

}

반환(참);

}

 

EA 문제 해결

모든 MQL 프로그래머 여러분, 안녕하세요.

다음 코드를 확인하고 이것이 내 데모 계정 에 거래를 배치하지 않는 이유를 알려주십시오. GJ 1m의 좋은 EA이지만 불행히도 작동하지 않습니다. 누구든지 그것을 수정하고 버그가 없는 EA로 사용할 수 있게 해주세요.

나는 고맙게도 미리!

친애하는.

//+----------------------------------------------- -------------------+

외부 정수 길이1 = 3;

외부 정수 Length2 = 10;

외부 정수 Length3 = 16;

이중 히스토[];

더블 마히스토[];

더블업[];

이중 DN[];

더블 업모드[];

이중 dnMode[];

int 경고 표시줄;

정수 초기화()

{

리턴(0);

}

정수 초기화()

{

리턴(0);

}

정수 시작()

{

정수 제한;

int counted_bars=IndicatorCounted();

if(counted_bars<0) counted_bars=0;

if(counted_bars>0) counted_bars--;

limit=막대-counted_bars;

for(int i = 0 ;i <= limit ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE ,나);

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);

for(int m = 0 ;m <= 한계 ;m++)

{

if(마히스토[m+1] 0)

{

up[m] = 개방[m]-(5*포인트);

if(막대 > alertBar && m == 0)

{

//Alert(Symbol()+" "+Period()+" KI LONG ",Ask);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = 막대;

}

}

else if(마히스토[m+1] >= 0 && 마히스토[m]< 0)

{

dn[m] = 개방[m]+(5*포인트);

if(막대 > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = 막대;

}

}

또 다른

{

위로[m] = EMPTY_VALUE;

dn[m] = EMPTY_VALUE;

}

if( 마히스토[m] > 0 )

{

upMode[m] = 높음[m];

dnMode[m] = 낮음[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = 높음[m];

upMode[m] = 낮음[m];

}

}

리턴(0);

}

//+----------------------------------------------- -------------------+

 
arsenic786:
안녕하세요, MQL 프로그래머 여러분,

다음 코드를 확인하고 이것이 내 데모 계정에 거래를 배치하지 않는 이유를 알려주십시오. GJ 1m의 좋은 EA이지만 불행히도 작동하지 않습니다. 누구든지 그것을 수정하고 버그가 없는 EA로 사용할 수 있게 해주세요.

나는 고맙게도 미리!

친애하는.

//+----------------------------------------------- -------------------+

외부 정수 길이1 = 3;

외부 정수 Length2 = 10;

외부 정수 Length3 = 16;

이중 히스토[];

더블 마히스토[];

더블업[];

이중 DN[];

더블 업모드[];

이중 dnMode[];

int 경고 표시줄;

정수 초기화()

{

리턴(0);

}

정수 초기화()

{

리턴(0);

}

정수 시작()

{

정수 제한;

int counted_bars=IndicatorCounted();

if(counted_bars<0) counted_bars=0;

if(counted_bars>0) counted_bars--;

limit=막대-counted_bars;

for(int i = 0 ;i <= limit ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE ,나);

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);

for(int m = 0 ;m <= 한계 ;m++)

{

if(마히스토[m+1] 0)

{

up[m] = 개방[m]-(5*포인트);

if(막대 > alertBar && m == 0)

{

//Alert(Symbol()+" "+Period()+" KI LONG ",Ask);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = 막대;

}

}

else if(마히스토[m+1] >= 0 && 마히스토[m]< 0)

{

dn[m] = 개방[m]+(5*포인트);

if(막대 > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = 막대;

}

}

또 다른

{

위로[m] = EMPTY_VALUE;

dn[m] = EMPTY_VALUE;

}

if( 마히스토[m] > 0 )

{

upMode[m] = 높음[m];

dnMode[m] = 낮음[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = 높음[m];

upMode[m] = 낮음[m];

}

}

리턴(0);

}

//+----------------------------------------------- -------------------+

"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,R ed); "

당신은 매도 가격으로 판매 중이며 입찰해야 합니다.

설명 필드는 0이 아니라 ""이어야 합니다.

SL은 Bid+25*Point여야 하므로 25입니다.

TP는 Bid-15*Point여야 하므로 15입니다.

"레드"는 색상이 아닙니다.

 
Michel:
"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,R ed); "

귀하는 매도 가격으로 판매 중이며 입찰해야 합니다.

설명 필드는 0이 아니라 ""이어야 합니다.

SL은 Bid+25*Point여야 하므로 25입니다.

TP는 Bid-15*Point여야 하므로 15입니다.

"레드"는 색상이 아닙니다.

지원해 주셔서 대단히 감사합니다!

그러나 여전히 문제에 직면해 있습니다. MQL에 대한 지식이 전혀 없습니다. 코드를 복사하여 mq4 파일에 붙여넣고 데모에서 테스트한 다음 제대로 작동하는지 알려주실 수 있습니까? 귀하의 지원은 Kindest Help Michel으로 계산됩니다.

친애하는,

카시프.

 

아니요, 죄송합니다. 지금은 시간이 충분하지 않습니다.

몇 시간 후 나는 배를 타고 크리스마스에 가족에게로 돌아가고 ... 그리고 더 이상 PC는 ...