코딩 도움말 - 페이지 469

 

안녕하세요 트레이더입니다.

누군가 나를 도와줄 수 있고 이 두 개의 .ex4 파일에 있는 표시기가 무엇인지 알 수 있습니까?!

안부 인사, 오잉!

파일:
 
oink!:
안녕하세요 트레이더입니다.

누군가 나를 도와줄 수 있고 이 두 개의 .ex4 파일에 있는 표시기가 무엇인지 알 수 있습니까?!

안부 인사, 오잉!

경고 신호는 화살표를 표시하도록 만든 간단한 지그재그입니다.

파일:
zz.gif  76 kb
 

감사 합니다 mladen, 약 10000명의 인디케이터 중에서 당신의 이름을 알고 있습니다! ;-)

그런 다음 지그재그 + 화살표 표시기 를 Google에서 찾습니다.

다른 하나는 정의되지 않았습니까?

안부 인사, 오잉!

 
oink!:
감사 합니다 mladen, 약 10000명의 인디케이터 중에서 당신의 이름을 알고 있습니다! ;-)

그런 다음 지그재그 + 화살표 표시기를 Google에서 찾습니다.

다른 하나는 정의되지 않았습니까?

안부 인사, 오잉!

솔직히 나는 다른 사람을 알아볼 수 없었다. 죄송합니다

 

여보세요,

이 ea가 작동하지 않는 이유를 이해할 수 없습니다. 저널이나 전문가 탭에는 아무것도 없지만 거래는 없습니다.

미리 감사드립니다.

외부 int magicNum=200;

외부 이중 TakeProfit = 50;

extern 이중 로트 = 0.01;

외부 이중 TrailingStop = 30;

//외부 이중 MACDOpenLevel=3;

//외부 이중 MACDCloseLevel=2;

외부 이중 MATrendPeriod=5;

정수 시작()

{

이중 MaCurrent, MaPrevious, MavPrevious;

이중 닫기=iClose(Symbol(),0,0);

이중 vclose=iClose(Symbol(),0,1);

이중 vvclose=iClose(Symbol(),0,2);

// 더블 MacdCurrent, MacdPrevious, SignalCurrent;

// 이중 SignalPrevious, MaCurrent, MaPrevious;

// 더블 RSIj,RSIv;

int cnt, 티켓, 합계;

// 초기 데이터 검사

// 전문가가 정상적인 작업을 수행하는지 확인하는 것이 중요합니다.

// 차트 및 사용자가 외부 설정에 실수를 하지 않았습니다.

// 변수(Lots, StopLoss, TakeProfit,

// TrailingStop) 이 경우 TakeProfit을 확인합니다.

// 막대가 100개 미만인 차트에서

if(막대<100)

{

Print("100개 미만의 막대");

리턴(0);

}

if(테이크프로핏<10)

{

Print("TakeProfit이 10 미만입니다.");

리턴(0); // TakeProfit 확인

}

// 코딩을 단순화하고 액세스 속도를 높입니다.

// 데이터를 내부 변수에 넣음

// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);

// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);

// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);

MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);

이중 PlusHaut = 높음;

이중 PlusBas = 낮음;

이중 TiersHaut = PlusBas +((PlusHaut-PlusBas)*0.66);

이중 TiersBas = PlusBas +((PlusHaut-PlusBas)*0.33);

// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);

// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1);

총계=주문총계();

if(총<1)

{ // 미결 주문이 식별되지 않음

if(AccountFreeMargin()<(1000*Lots))

{

Print("돈이 없습니다. Free Margin = ", AccountFreeMargin());

리턴(0);

}

// 롱포지션(BUY) 가능성 확인

만약

// (RSIv30)

( MaCurrent > MaPrevious )

// && (MaPreviousvclose || vclose>vvclose))

// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&

// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"MA",magicNum,0,Green);

if(티켓>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("구매 주문이 열렸습니다: ",OrderOpenPrice());

}

else Print("구매 주문 열기 오류: ",GetLastError());

리턴(0);

}

// 매도(SELL) 가능성 확인

// if (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))

// (MacdCurrent>0 && MacdCurrentSignalPrevious &&

// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"MA",magicNum,0,Red);

if(티켓>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(" SELL 주문 이 열렸습니다 : ",OrderOpenPrice());

}

else Print("판매 주문 열기 오류: ",GetLastError());

리턴(0);

}

리턴(0);

}

// 시장에 올바르게 진입하는 것이 중요하며,

// 하지만 올바르게 종료하는 것이 더 중요합니다...

for(cnt=0;cnt<전체;cnt++)

{

주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // 열린 위치 확인

OrderSymbol()==Symbol()) // 기호 확인

{

if(OrderType()==OP_BUY) // 롱 포지션 오픈

{

// 닫아야 하나?

// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&

// MacdCurrent>(MACDCCloseLevel*Point))

// if (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(), 입찰, 3, 보라색); // 닫기 위치

리턴(0); // 출구

}

// 후행 정지 확인

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

리턴(0);

}

}

}

}

else // 숏 포지션으로 이동

{

// 닫아야 하나?

// if(MacdCurrentSignalCurrent &&

// MacdPrevious(MACDCCloseLevel*Point))

만약

// (RSIv30)

( MaCurrent > MaPrevious )

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,바이올렛); // 닫기 위치

리턴(0); // 출구

}

// 후행 정지 확인

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

리턴(0);

}

}

}

}

}

}

반환(0);

}

// 끝.

 
Jovager:
여보세요,

이 ea가 작동하지 않는 이유를 이해할 수 없습니다. 저널이나 전문가 탭에는 아무것도 없지만 거래는 없습니다.

미리 감사드립니다.

외부 int magicNum=200;

외부 이중 TakeProfit = 50;

extern 이중 랏 = 0.01;

외부 이중 TrailingStop = 30;

//외부 이중 MACDOpenLevel=3;

//외부 이중 MACDCloseLevel=2;

외부 이중 MATrendPeriod=5;

정수 시작()

{

이중 MaCurrent, MaPrevious, MavPrevious;

이중 닫기=iClose(Symbol(),0,0);

이중 vclose=iClose(Symbol(),0,1);

이중 vvclose=iClose(Symbol(),0,2);

// 더블 MacdCurrent, MacdPrevious, SignalCurrent;

// 이중 SignalPrevious, MaCurrent, MaPrevious;

// 더블 RSIj,RSIv;

int cnt, 티켓, 합계;

// 초기 데이터 검사

// 전문가가 정상적인 작업을 수행하는지 확인하는 것이 중요합니다.

// 차트 및 사용자가 외부 설정에 실수를 하지 않았습니다.

// 변수(Lots, StopLoss, TakeProfit,

// TrailingStop) 이 경우 TakeProfit을 확인합니다.

// 막대가 100개 미만인 차트에서

if(막대<100)

{

Print("100개 미만의 막대");

리턴(0);

}

if(테이크프로핏<10)

{

Print("TakeProfit이 10 미만입니다.");

리턴(0); // TakeProfit 확인

}

// 코딩을 단순화하고 액세스 속도를 높입니다.

// 데이터를 내부 변수에 넣음

// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);

// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);

// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);

MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);

이중 PlusHaut = 높음;

이중 PlusBas = 낮음;

이중 TiersHaut = PlusBas +((PlusHaut-PlusBas)*0.66);

이중 TiersBas = PlusBas +((PlusHaut-PlusBas)*0.33);

// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);

// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1);

총계=주문총계();

if(총<1)

{ // 미결 주문이 식별되지 않음

if(AccountFreeMargin()<(1000*Lots))

{

Print("돈이 없습니다. Free Margin = ", AccountFreeMargin());

리턴(0);

}

// 롱포지션(BUY) 가능성 확인

만약

// (RSIv30)

( MaCurrent > MaPrevious)

// && (MaPreviousvclose || vclose>vvclose))

// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&

// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"MA",magicNum,0,Green);

if(티켓>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("구매 주문이 열렸습니다: ",OrderOpenPrice());

}

else Print("구매 주문 열기 오류: ",GetLastError());

리턴(0);

}

// 매도(SELL) 가능성 확인

// if (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))

// (MacdCurrent>0 && MacdCurrentSignalPrevious &&

// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"MA",magicNum,0,Red);

if(티켓>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("판매 주문이 열렸습니다: ",OrderOpenPrice());

}

else Print("판매 주문 열기 오류: ",GetLastError());

리턴(0);

}

리턴(0);

}

// 시장에 올바르게 진입하는 것이 중요하며,

// 하지만 올바르게 종료하는 것이 더 중요합니다...

for(cnt=0;cnt<전체;cnt++)

{

주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // 열린 위치 확인

OrderSymbol()==Symbol()) // 기호 확인

{

if(OrderType()==OP_BUY) // 롱 포지션 오픈

{

// 닫아야 하나?

// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&

// MacdCurrent>(MACDCCloseLevel*Point))

// if (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(), 입찰, 3, 보라색); // 닫기 위치

리턴(0); // 출구

}

// 후행 정지 확인

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

리턴(0);

}

}

}

}

else // 숏 포지션으로 이동

{

// 닫아야 하나?

// if(MacdCurrentSignalCurrent &&

// MacdPrevious(MACDCCloseLevel*Point))

만약

// (RSIv30)

( MaCurrent > MaPrevious )

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,바이올렛); // 닫기 위치

리턴(0); // 출구

}

// 후행 정지 확인

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

리턴(0);

}

}

}

}

}

}

리턴(0);

}

// 끝.

내 백 테스트에서 작동합니다.

파일:
jo.gif  90 kb
 

안녕하세요 mladen님

변수 "LossValue"와 동일한 값으로 내 이익 주문을 부분적으로 판매하고 싶습니다.

다음 단계에서 lotsize를 계산하려고 했습니다.

-profitOrder에서 실제 Profit 읽기

-ProfitPerLotstep 계산

-Lot 결과를 반올림하여 LossValue/ProfitPerLotstep을 계산합니다.

-하지만 이것을 팔면 이익 가치가 너무 작습니다 (스프레드 때문에 생각합니다)

올바른 계산 방법은 무엇입니까?

 

여기에 추가 질문이 있습니다.

내가 부분적으로 청산하면 나머지 포지션은 브로커에 의해 자동으로 열립니다. 내가 그 위치를 다르게 하기 위해 그 위치에 코멘트를 주기 전에. 이제 어떻게 인식할 수 있습니까?

 
sunshineh:
여기에 추가 질문이 있습니다. 내가 부분적으로 청산하면 나머지 포지션은 브로커에 의해 자동으로 열립니다. 내가 그 위치를 다르게 하기 위해 그 위치에 코멘트를 주기 전에. 이제 어떻게 인식할 수 있습니까?

선샤인

당신은 아무것도 할 수 없습니다

중개인만 주문의 설명 필드를 변경할 수 있습니다. 브로커가 "from nnnn"과 같은 방식으로 주석을 변경할 수도 있습니다. 여기서 nnnn은 이전 티켓 번호이지만 대부분의 경우에는 그렇지 않으므로 다음과 같은 경우 이전 주문을 고유하게 식별할 수 있는 솔루션이 없습니다. 저것

 

감사합니다 mladen! 100 EUR와 같은 정의된 값에 따라 lotsize에서 계산하기 전에 내 게시물에 대한 솔루션이 있습니까?