[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 636

 

좋은 사람들, 도와주세요. 나는 그것을 이해할 수 없습니다. TrailingStop이 제대로 작동하지 않습니다. SELL에서 거래가 열리면 흔적이 잘 작동하지만 BUY가 열리면 어떤 이유로 든 즉시 중지됩니다. 수정 가능. 오류가 어디에 있는지 알 수 없습니다. 코드는 다음과 같습니다.

외부 정수 TP = 50;
외부 정수 SL = 50;
extern int 후행 = 15;

정수 초기화()
{반환(0);}
정수 초기화()
{반환(0);}

정수 시작()
{
//========= 손익분기점 계산 ======
정수 나;
더블 랏BUY=0;
이중 lotSEL=0;
이중 합계BUY=0;
이중합SEL=0;

(i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 계속;
if (OrderSymbol()!=Symbol()) 계속
if (주문유형()==OP_BUY)
{
lotBUY=lotsBUY+OrderLots();
sumBUY=sumBUY+OrderLots()*OrderOpenPrice();
}

if (주문 유형()==OP_SELL)
{
lotSEL=lotsSEL-OrderLots();
sumSEL=sumSEL-OrderLots()*OrderOpenPrice();
}
}
두 배 가격BUY=0;
if (lotsBUY!=0) priceBUY=sumBUY/lotsBUY;
두 배 가격SEL=0;
if (lotsSEL!=0) priceSEL=sumSEL/lotsSEL;

//======== 포지션 개설 =====


이중 MA=iMA(NULL,0,14,0,MODE_SMMA,PRICE_CLOSE,0);

if (OrdersTotal() < 1 && Bid>MA)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);
if (OrdersTotal() < 1 && Ask<MA)
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+SL*Point,Bid-TP*Point,0,0,0,Red);


//======= 후행 정지 =======

for(i = 0; i <= OrdersTotal(); i++)
{
주문 선택(i, SELECT_BY_POS, MODE_TRADES);

if (OrderType()==OP_SELL && 후행!=0)
{
if(priceSEL-Ask>=Trailing*Point && OrderStopLoss()>(Ask+Trailing*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0, CLR_NONE );
}
}
if (OrderType()==OP_BUY && 후행!=0)
{
if(Bid-priceBUY>=Trailing*Point && (Bid-Point*Trailing)>OrderStopLoss())
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing,OrderTakeProfit(),0,CLR_NONE);
}
}
}
반환(0);

}

그런 순간이 있습니다. TrailingStop 블록에서 priceBUY를 OrderOpenPrice()로 변경하면 모든 것이 작동하지만 시작 가격이 아닌 손익분기 수준에서 추적해야 합니다..... SELL에서 작동합니다. 근데 어째서인지 구매가 안되네요....어디서 오류가 나는지 모르겠네요.....SOS!!!!!!!!

 
Roman. :


이것은 오류가 아닙니다. 이것은 최소. 균형 - 즉 카운트가 병합됩니다. 통과가 끝나고 다음 입력 매개변수 세트로 새 통과가 시작됩니다. 테스터 최적화 탭의 체크박스와 설정된 한계 값을 참조하세요.

고맙습니다!
 

안녕하세요!! 내 고문은 이 곳에서 주문을 제거합니다.

 if (Summaprofita()>=Profit_v_balans )
        {
         for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
           {
               bool error=true;
             OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
            
             if ( magic== OrderMagicNumber ( ) && OrderSymbol ()== Symbol ())
              {
              
                 OrderClose ( OrderTicket ( ), OrderLots ( ), OrderClosePrice ( ) , 0 , CLR_NONE ); error=false;
                           Sleep ( 1000 );
             OrderDelete ( OrderTicket ());error=false;
         } } }
        

여기 모든 것이 길을 찾기 전에-어쨌든 2-5 개의 주문이있는 동안 정상적으로 청소했습니다. 여기서 원하는 종류의 로프는 새 버전에서 20, 50 각 면에 있습니다. 한마디로 청소가 안됩니다. 음, 두 번, 세 번, 네 번 청소하다가 갑자기 안 돼요!!!

테스터에서 어떻게 보이는지 흥미롭습니다. 일반적으로 가격 근처에서 많은 주문을 제거하지만 전부는 아닙니다!! 어떤 변태가 예상되고, 발명되고, 환상적일 수 있으며, 무엇을 끝내야 합니까?

사실, 글쎄, 모든 것이 방해되기 전에 ??? 전에 닫았나요? 그에게 무엇이 더 필요합니까????

 

좋은 사람들, 도와주세요. 나는 그것을 이해할 수 없습니다. TrailingStop이 제대로 작동하지 않습니다. SELL에서 거래가 열리면 흔적이 잘 작동하지만 BUY가 열리면 어떤 이유로 든 즉시 중지됩니다. 수정 가능. 오류가 어디에 있는지 알 수 없습니다. 코드는 다음과 같습니다.

extern int TP = 100;
extern int SL = 100;
extern int Trailing = 15;

int init()
{return(0);}
int deinit()
{return(0);}

int start()
{
//========= Расчёт уровня безубытка ======
int i;
double lotsBUY=0;
double lotsSEL=0;
double sumBUY=0;
double sumSEL=0;

for (i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUY)
{
lotsBUY=lotsBUY+OrderLots();
sumBUY=sumBUY+OrderLots()*OrderOpenPrice();
}

if (OrderType()==OP_SELL)
{
lotsSEL=lotsSEL-OrderLots();
sumSEL=sumSEL-OrderLots()*OrderOpenPrice();
}
}
double priceBUY=0;
if (lotsBUY!=0) priceBUY=sumBUY/lotsBUY;
double priceSEL=0;
if (lotsSEL!=0) priceSEL=sumSEL/lotsSEL;



//======== Открытие позиции =====


double MA=iMA(NULL,0,14,0,MODE_SMMA,PRICE_CLOSE,0);

if (OrdersTotal() < 1 && Bid>MA)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);
if (OrdersTotal() < 1 && Ask<MA)
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+SL*Point,Bid-TP*Point,0,0,0,Red);


//======= Trailing Stop =======

for(i = 0; i <= OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (OrderType()==OP_SELL && Trailing!=0)
{
if(priceSEL-Ask>=Trailing*Point && OrderStopLoss()>(Ask+Trailing*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
}
}
if (OrderType()==OP_BUY && Trailing!=0)
{
if(Bid-priceBUY>=Trailing*Point && (Bid-Point*Trailing)>OrderStopLoss())
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing,OrderTakeProfit(),0,CLR_NONE);
}
}
}
return(0);
}

그런 순간이 있습니다. TrailingStop 블록에서 priceBUY를 OrderOpenPrice()로 변경하면 모든 것이 작동하지만 시작 가격 이 아니라 손익분기 수준에서 추적해야 합니다..... SELL에서는 작동하지만 어째서인지 구매가 안되네요....어디서 오류가 나는지 모르겠네요.....SOS !!!!!!!!
 
MIR-ASOV :

좋은 사람들, 도와주세요. 나는 그것을 이해할 수 없습니다. TrailingStop이 제대로 작동하지 않습니다. SELL에서 거래가 열리면 흔적이 잘 작동하지만 BUY가 열리면 어떤 이유로 든 즉시 중지됩니다. 수정 가능. 오류가 어디에 있는지 알 수 없습니다. 코드는 다음과 같습니다.

그런 순간이 있습니다. TrailingStop 블록에서 priceBUY를 OrderOpenPrice()로 변경하면 모든 것이 작동하지만 시작 가격이 아닌 손익분기 수준에서 추적해야 합니다..... SELL에서는 작동하지만 어째서인지 구매가 안되네요....어디서 오류가 나는지 모르겠네요.....SOS !!!!!!!!

수정하기 전에 priceBUY의 값을 Print() 로 인쇄해 보십시오. 예상과 일치합니까?
 
수정하기 전에 priceBUY의 값을 Print()로 인쇄해 보십시오. 예상과 일치합니까?
예, 확인했습니다. 완전하고 완벽하게 일치합니다. ...... 사실 BUY의 손익분기점 수준은 주문 개시 가격 과 동일하지만 어떤 이유로 작동하지 않는지 OrderOpenPrice()를 설정하면 모든 것이 작동합니다. 가격 설정BUY, 아니 ......
 
개봉 당시에 priceBUY 변수에 0이 있을 가능성이 높으므로 Bid- priceBUY(0)==Bid, 따라서
 
Dimka-novitsek :

안녕하세요!! 내 고문은 이 곳에서 주문을 제거합니다.

여기 모든 것이 길을 찾기 전에-어쨌든 2-5 개의 주문이있는 동안 정상적으로 청소했습니다. 여기서 원하는 종류의 로프는 새 버전에서 20, 50 각 면에 있습니다. 한마디로 청소가 안됩니다. 음, 두 번, 세 번, 네 번 청소하다가 갑자기 안 돼요!!!

테스터에서 어떻게 보이는지 흥미롭습니다. 일반적으로 가격 근처에서 많은 주문을 제거하지만 전부는 아닙니다!! 어떤 변태가 예상되고, 발명되고, 환상적일 수 있으며, 무엇을 끝내야 합니까?

사실, 음, 모든 것이 이전과 같았습니까?? 전에 닫았나요? 그에게 무엇이 더 필요합니까????

에이, 그건 작동하지 않을거야.

  OrderClose ( OrderTicket ( ), OrderLots ( ), OrderClosePrice ( ) , 0 , CLR_NONE );

주문이 마감될 때까지 해당 OrderClosePrice는 0이며 주문을 마감하는 실제 가격으로 대체해야 합니다. SELL 주문의 경우 요청하고 BUY를 위해 입찰하십시오.

 
alsu :

에이, 그건 작동하지 않을거야.

주문이 마감될 때까지 해당 OrderClosePrice는 0이며 주문을 마감하는 실제 가격으로 대체해야 합니다. SELL 주문의 경우 요청하고 BUY를 위해 입찰하십시오.


아니오, 마감되지 않은 주문에 대한 OrderClosePrice()는 0이 아닙니다. 확인하십시오. OrderCloseTime() - 예
 
감사해요!! 노력하겠습니다. 이해합니다.
사유: