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

 
MiniMe:
Ralph에게 감사하지만 스왑을 놓치고 주문 결정을 마칠 때 스왑 손익을 포함하고 싶습니다.

그러나 첫 번째 루프는 이익과 스왑을 모두 누적하지 않습니까?

나는 주식 수치가 5핍이 오픈 로트에 대해 의미하는 것과 비교할 수 있는 수치라고 생각했습니다. 그러면 실제로 손익분기 가격을 계산할 필요가 없습니다.

 

안녕 랄프

나는 3개의 변수를 가지고 있다

오드로트 ; 로트에서 오픈 로트를 나타내지만 이것은 스왑을 건너뛸 것입니다.

형평성 ; 이것은 총 이익 손실이며 여기에는 스왑이 포함됩니다.

민프로 ; 이것은 5핍 + 손익분기점인 내 이익입니다.

스왑을 건너뛸 것이기 때문에 OrdLot를 사용하여 핍 단위의 손익을 찾을 수 없습니다.

나는 주식을 사용하여 핍으로 손익을 찾을 수 없습니다. 왜냐하면 얼마나 많은 로트가 사용되는지 알아야 하지만 로트에 대한 계산은 스왑을 건너뛰기 때문입니다.

어떻게 해서든 OrdLots와 Equity 모두의 기능을 사용하여 몇 개의 핍이 열렸는지 알아야 합니다.

계정 잔액 또는 계정 자산과 관련된 MT4에 준비된 것이 있을 수 있지만 찾지 못했습니다.

고맙게 제안한 솔루션은 스왑을 고려하지 않고 핍에서 손익을 찾을 수 있지만 이미 해당 기능을 넣었습니다 ... 스왑으로 손익분기점보다 5핍 위에서 종료하고 싶습니다

 

시간 비교 및 루프 수행

안녕하세요 여러분.

나는 Mql4 언어에 매우 익숙하지 않습니다. openordertime을 Int var와 비교하고 싶습니다. 일정 시간이 지나고 주문이 아직 열려 있으면 손익분기점 상황이나 어쩌면 이익 상황에 도달할 수 있도록 허용되는 주문의 양을 늘리고 싶습니다. 그런 다음 열려 있는 모든 주문을 동시에 닫고 최대 주문을 원래 허용된 최대 값으로 다시 설정합니다. 누군가가 저를 돕거나 이미 이와 같은 작업을 수행하는 다른 게시물의 코드를 보여줄 수 있습니까?

이 코드를 사용하고 있지만 작동하지 않는 것 같습니다.

// 주문이 오랫동안 열려 있으면 주문을 닫고 손익분기점을 시도합니다.

무효 TimeProtection()

{

int totalorders = OrdersTotal();

for(int i=totalorders-1;i>=0;i--)

{

주문 선택(i, SELECT_BY_POS);

if ( OrderSymbol()==Symbol() )

{

prTime = OrderOpenTime();

prTime = prTime * 콜타임;

if (prTime >= TimeCurrent())

{

MaxAllowable_Trades = MaxAllowable_Trades + 3;

플래그 = 1;

부서지다;

}

}

}

반품;

}

나는 정말로 이것에 당신의 도움을 원합니다.

감사해요

 
MiniMe:
안녕 랄프

나는 3개의 변수를 가지고 있다

오드로트 ; 로트에서 오픈 로트를 나타내지만 이것은 스왑을 건너뛸 것입니다.

형평성 ; 이것은 총 이익 손실이며 여기에는 스왑이 포함됩니다.

민프로 ; 이것은 5핍 + 손익분기점인 내 이익입니다.

스왑을 건너뛸 것이기 때문에 OrdLot를 사용하여 핍 단위의 손익을 찾을 수 없습니다.

나는 주식을 사용하여 핍으로 손익을 찾을 수 없습니다. 왜냐하면 얼마나 많은 로트가 사용되는지 알아야 하지만 로트에 대한 계산은 스왑을 건너뛰기 때문입니다.

어떻게 해서든 OrdLots와 Equity 모두의 기능을 사용하여 몇 개의 핍이 열렸는지 알아야 합니다.

계정 잔액 또는 계정 자산과 관련된 MT4에 준비된 것이 있을 수 있지만 찾지 못했습니다.

고맙게 제안한 솔루션은 스왑을 고려하지 않고 핍에서 손익을 찾을 수 있지만 이미 해당 기능을 넣었습니다 ... 스왑으로 손익분기점보다 5핍 위에서 종료하고 싶습니다

아... 알겠습니다... 따라서 첫 번째 루프에서 EquityNoSwap으로 스왑하지 않고 이익을 누적하면 내 "if" 문에서 Equity 대신 이를 사용할 수 있습니다. (?) 그러면 테스트가 "손익분기 + 스왑 가격과 관련하여 5핍 이익이 있습니까?"가 될 것이기 때문입니다. 이것은 실제로 "스왑을 무시하고 5핍 이익이 있습니까?"와 같습니다. (아니면 아직도 이해가 안가는듯)

기본적으로 "이익+스왑"은 상대적인 "손익분기점"이므로 "이익"은 상대적인 "손익분기점+스왑"이며 "이익"은 "OrdLots"에 분산됩니다. 대체로 "손익분기점"에 대한 실제 핍 가격을 결정할 필요가 없습니다.

 

최고의 EA 코딩 아이디어

여기에서 도움을 받기 위해 이 트레드를 시작했습니다.첨부된 표시기에 대한 코딩을 배우고 있습니다.그러나 제대로 작동하지 않았습니다.누군가 도와줄 수 있습니까? 이것은 매우 신뢰할 수 있는 지표이며 누군가 EA를 만들 수 있다면 거의 성배입니다.

기본 원리는 다음과 같습니다.

1.빨간 화살표가 나타나면 매도 포지션을 연다.

2흰색 화살표가 나타나면 매수 포지션을 열고 모든 매도 포지션/포지션을 자동으로 닫습니다.

3. 모든 기간에 신청하십시오.

4. 정지 손실 없음,

5.주문 기능 추가.

응답을 기대합니다!

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

//| IINWMARROWS.mq4 |

//| EMA_CROSS.mq4 기반 |

//| Copyright ?2006, MetaQuotes Software Corp. |

//| Forex 거래 소프트웨어: Forex 거래 플랫폼 MetaTrader 4 |

//| Iin Zulkarnain이 마지막으로 수정 |

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

#property copyright "Copyright ?2006, MetaQuotes Software Corp."

#속성 링크 "http://www.metaquotes.net"

//----

#속성 표시기_차트_창

#속성 표시기_버퍼 2

#property indicator_color1 흰색

#property indicator_color2 빨간색

#속성 표시기_너비1 2

#속성 표시기_너비2 2

//----

더블 크로스업[];

더블 크로스다운[];

extern int FasterMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int FasterMA= 3;

extern int 느린 모드 = 3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int SlowerMA= 3;

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

//| 커스텀 인디케이터 초기화 기능 |

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

정수 초기화()

{

//---- 표시기

SetIndexStyle(0, DRAW_ARROW, EMPTY);

SetIndexArrow(0, 233);

SetIndexBuffer(0, 크로스업);

SetIndexStyle(1, DRAW_ARROW, EMPTY);

SetIndexArrow(1, 234);

SetIndexBuffer(1, 크로스다운);

//----

리턴(0);

}

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

//| 커스텀 인디케이터 초기화 해제 기능 |

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

정수 초기화()

{

//----

//----

리턴(0);

}

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

//| 사용자 지정 표시기 반복 기능 |

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

정수 시작()

{

int 제한, i, 카운터;

더블 fastMAnow, slowMAnow, fastMAprevious, slowMAprevious, fastMAafter, slowMAafter;

이중 범위, AvgRange;

int counted_bars=IndicatorCounted();

//---- 가능한 오류 확인

if(counted_bars<0) return(-1);

//---- 마지막으로 계산된 막대가 다시 계산됩니다.

if(counted_bars>0) counted_bars--;

//----

limit=막대-counted_bars;

for(i=0; i<=한계; i++)

{

카운터 = 나;

범위=0;

평균 범위=0;

for(카운터=i ;카운터<=i+9;카운터++)

{

AvgRange=AvgRange+MathAbs(높음[카운터]-낮음[카운터]);

}

범위=AvgRange/10;

fastMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);

fastMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);

fastMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);

//----

slowMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);

slowMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1);

slowMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1);

if ((fasterMAnow > slowMAnow) && (fasterMAprevious slowMAafter))

{

CrossUp=낮음 - 범위*0.5;

}

else if ((fasterMAnow slowMAprevious) && (fasterMAafter < slowMAafter))

{

CrossDown=높음 + 범위*0.5;

}

}

리턴(0);

}

//+----------------------------------------------- -------------------+올바른 코딩 방법을 배우기 위한 이 스레드,

 

위대하고 용감한 코더들에게

누구든지 이 EA에 대해 최대 위치를 추가할 수 있습니까?

또는 한 위치만 실행하도록 하시겠습니까?

미리 감사합니다

파일:
reverse_1.mq4  16 kb
 

게시물 삭제됨

 

주제에서 벗어난 질문

비오픈 소스 프로그램에서 데이터 스니핑이 가능합니까?

그들은 가난한 프로그래밍 언어를 가지고 있습니다 (Metastock과 비슷하지만 더 열악하고 ''이전'' 기능 이 허용되지 않음). 그들은 자신의 지표 만 허용하고 데이터 독점 (법률에 따라)을 갖습니다. DLL 확장을 작성할 수 없습니다. 실시간 환경에서 내 지표를 실행하게 하려면 '엑셀의 포트 수신 기능''과 같은 것을 들었지만 그것이 무엇인지 전혀 모릅니다.

모든 프로그래머는 매우 감사하게 응답합니다.

 

다른 쌍에 대한 주문 열기

안녕,

다른 통화 쌍 에 대한 주문을 여는 방법이 있습니까?

예를 들어, EA는 EURUSD 차트에서 실행되고 있지만 USDJPY에 대한 주문을 열고 싶습니다.

이게 가능해.

미리 감사드립니다

 

OrderSend("USDJPY",OP_BUY,0.1,MarketInfo("USDJPY",MODE_ASK),10,0,0,"Com",0,0, CLR_NONE );