sunshineh: 여기에 추가 질문이 있습니다. 내가 부분적으로 청산하면 나머지 포지션은 브로커에 의해 자동으로 열립니다. 내가 그 위치를 다르게 하기 위해 그 위치에 코멘트를 주기 전에. 이제 어떻게 인식할 수 있습니까?
선샤인
당신은 아무것도 할 수 없습니다
중개인만 주문의 설명 필드를 변경할 수 있습니다. 브로커가 "from nnnn"과 같은 방식으로 주석을 변경할 수도 있습니다. 여기서 nnnn은 이전 티켓 번호이지만 대부분의 경우에는 그렇지 않으므로 다음과 같은 경우 이전 주문을 고유하게 식별할 수 있는 솔루션이 없습니다. 저것
안녕하세요 트레이더입니다.
누군가 나를 도와줄 수 있고 이 두 개의 .ex4 파일에 있는 표시기가 무엇인지 알 수 있습니까?!
안부 인사, 오잉!
안녕하세요 트레이더입니다.
누군가 나를 도와줄 수 있고 이 두 개의 .ex4 파일에 있는 표시기가 무엇인지 알 수 있습니까?!
안부 인사, 오잉!경고 신호는 화살표를 표시하도록 만든 간단한 지그재그입니다.
감사 합니다 mladen, 약 10000명의 인디케이터 중에서 당신의 이름을 알고 있습니다! ;-)
그런 다음 지그재그 + 화살표 표시기 를 Google에서 찾습니다.
다른 하나는 정의되지 않았습니까?
안부 인사, 오잉!
감사 합니다 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);
}
// 끝.
여보세요,
이 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);
}
// 끝.내 백 테스트에서 작동합니다.
안녕하세요 mladen님
변수 "LossValue"와 동일한 값으로 내 이익 주문을 부분적으로 판매하고 싶습니다.
다음 단계에서 lotsize를 계산하려고 했습니다.
-profitOrder에서 실제 Profit 읽기
-ProfitPerLotstep 계산
-Lot 결과를 반올림하여 LossValue/ProfitPerLotstep을 계산합니다.
-하지만 이것을 팔면 이익 가치가 너무 작습니다 (스프레드 때문에 생각합니다)
올바른 계산 방법은 무엇입니까?
여기에 추가 질문이 있습니다.
내가 부분적으로 청산하면 나머지 포지션은 브로커에 의해 자동으로 열립니다. 내가 그 위치를 다르게 하기 위해 그 위치에 코멘트를 주기 전에. 이제 어떻게 인식할 수 있습니까?
여기에 추가 질문이 있습니다. 내가 부분적으로 청산하면 나머지 포지션은 브로커에 의해 자동으로 열립니다. 내가 그 위치를 다르게 하기 위해 그 위치에 코멘트를 주기 전에. 이제 어떻게 인식할 수 있습니까?
선샤인
당신은 아무것도 할 수 없습니다
중개인만 주문의 설명 필드를 변경할 수 있습니다. 브로커가 "from nnnn"과 같은 방식으로 주석을 변경할 수도 있습니다. 여기서 nnnn은 이전 티켓 번호이지만 대부분의 경우에는 그렇지 않으므로 다음과 같은 경우 이전 주문을 고유하게 식별할 수 있는 솔루션이 없습니다. 저것
감사합니다 mladen! 100 EUR와 같은 정의된 값에 따라 lotsize에서 계산하기 전에 내 게시물에 대한 솔루션이 있습니까?