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

 
시작 위 티켓을 발표했습니다. Typer는 하나의 주문만 수정하지만 그것은 또 다른 실수입니다! 그리고 변수가 if 내부에 선언되어 있음이 밝혀졌습니다.
 
Dimka-novitsek :

좋은 아침! 그리고 갭이 있는 조건은 무엇을 의미합니까? 분당 가격이 35핍 상승하면 손절매는 주문보다 10핍 아래로 이동합니다. 가격과의 거리는 45pp입니다.

아니면 또 어떤 틈을 말씀하시는 건가요?


좋은 아침, 신선한 머리!

수정 오더가 전송되고 수신되고 실행되는 동안 가격이 오르거나 내리거나 고정되지 않습니다. 누가 알겠습니까?!

 #include <stderror.mqh>
#include <stdlib.mqh> 
//-------------------

extern int prev = 30 ;//зазор! Для 5-знака!
extern int sl   = ??;
extern int tp   = ??;
//------------------
int start()
{
//------------------
//----------------------/  Stops & Trailing  \----------------------\\
   for ( int i = 0 ; i < OrdersTotal (); i++)
  {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
    {
       if ( OrderSymbol () != Symbol () && OrderMagicNumber () != Magic) continue ;
       if ( OrderCloseTime () != 0 ) continue ;
       if ( OrderType () == OP_BUY)
      {
         if ( OrderStopLoss () < OrderOpenPrice () || OrderStopLoss () == 0 )
        {
//----------------------
           if ( OrderStopLoss () == 0 )
           if (Bid < OrderOpenPrice () && Bid > NormalizeDouble ( OrderOpenPrice ()-sl* Point +prev* Point , Digits ))
           if (Bid > NormalizeDouble ( OrderOpenPrice ()-sl* Point +prev* Point , Digits ))
          {
            SL = NormalizeDouble ( OrderOpenPrice ()-sl* Point , Digits );
             if (Bid < NormalizeDouble ( OrderOpenPrice ()+tp* Point -prev* Point , Digits ))
            {
              TP = NormalizeDouble ( OrderOpenPrice ()+tp* Point , Digits );
              ModifyOrder( OrderTicket (), OrderOpenPrice (),SL,TP, 0 , Blue ); return ( 0 );
        } } }
//-----------------------
//------------------------/  Modify Order  \------------------------\\
void ModifyOrder( int ticket, double price, double stoploss, double takeprofit, datetime e, color arrow_color)
{
   int ModifyCnt = 0 , err;
   while (ModifyCnt < 3 )
  {
     if ( OrderModify (ticket, NormalizeDouble (price, Digits ), NormalizeDouble (stoploss, Digits ),
     NormalizeDouble (takeprofit, Digits ), 0 ,arrow_color))
    ModifyCnt = 3 ;
     else err = GetLastError ();
     if (err > 0 )
    { 
       Print (ModifyCnt, " #" ,ticket, " Error modifing order: (" , err , ") " , ErrorDescription(err));
       Sleep ( 3000 ); RefreshRates (); ModifyCnt++;
} } }

그리고 Sella에게는 그 반대가 사실입니다! 내 의견으로는 중복되는 주석 없이 알아내는 행운을 빕니다!

그리고 귀하의 게시물이 더 읽기 쉽게 러시아어 설명 사전을 살펴보십시오.

10년 넘게 다른 언어로 생각하고 있는데 당신의 "혁신"을 알지 못하기 때문에 가끔 들릅니다... :))

 
Dimka-novitsek :

안녕하세요! 주문 수정 - 오류 4051. 한 시간 동안 고민했습니다. 음, 매개 변수가 올바른 것 같습니다 !!! 한마디로 말 그대로. price 매개변수는 기본적으로 주문 개시 가격인 OrderOpenPrice ()입니다.

우리는 주문의 시작 가격보다 10포인트 낮은 스탑을 나르고 가격을 잊어버렸습니다. 주문을 열 때 tsena 변수에 기억됩니다.

두 가지 주문이 있습니다. 하나는 이익이 있고 다른 하나는 이익이 없습니다. 여기에서는 분명한 것 같습니다. 어디에서 오류가 발생합니까? 그를 위해 또 무엇이 있습니까?

예, 더 이상 관련이 없지만 조건이 명확한 것 같습니다. 즉, 가격은 30포인트가 되었습니다 - 조건이 작동했습니다.( tsena+ 30 * Point ).

한 번 착용 perenos=true; 이러한 조건은 실제로 작동하는 것 같습니다.

나는 나 자신을 어떻게 생각해야 할지 모르겠다.

실제로 한 번 착용 perenos=true; 이러한 조건은 준수할 필요가 없었습니다. 아무데도 입지 않습니다.

이 줄:

         int tacket = OrderSend ( Symbol (), OP_BUY, lot, NormalizeDouble (Ask, Digits ), 5 , NormalizeDouble (Ask - ( 35 * Point ), Digits ), 
             NormalizeDouble (Ask + ( 45 * Point ), Digits ), NULL , 450 , 0 , CLR_NONE );

그런 다음 이 변수를 사용하여(이 틱이 아님) 티켓 = 0(변수는 0으로 재설정됨)으로 주문을 수정하면 기본 사항을 모른다는 것을 나타냅니다. 로컬 및 전역 변수 의 개념부터 시작합니다.

그리고 2초 만에 열림 새로 열린 주문의 사본 - 이것이 바로 액세서리입니다!!! 난 울고있어... :)

 
감사합니다!!
 
borilunad :

기능 없이 가능:

서둘러 대답하기 전에 먼저 조건(사람이 필요로 하는 것)을 주의 깊게 읽은 다음 코드 결과를 가져와 계산합니다.
먼저 예금에 대해 이야기하고 있는데 이것이 AccountBalance()입니다. Equ / depo는 소수이며 어떤 종류의 등급에 대해 이야기 할 수 있습니까 ???
 
TarasBY :
서둘러 대답하기 전에 먼저 조건(사람이 필요로 하는 것)을 주의 깊게 읽은 다음 코드 결과를 가져와 계산합니다.
먼저 예금에 대해 이야기하고 있는데 이것이 AccountBalance()입니다. Equ / depo는 소수이며 어떤 종류의 등급에 대해 이야기 할 수 있습니까 ???

여기에서는 스테핑보다 부드러움이 더 적절하다고 생각합니다. 그리고 "사람이 필요로하는 것"에 관해서는 그가 여전히 필요한 것을 명확하게 이해하지 못한다는 것을 완벽하게 이해합니다!
 
TG :

안녕하세요.

로트를 단계별로 계산하는 기능이 필요합니다. 예를 들어, 500개마다 로트를 늘리기 위해 구성할 수 있는 항목

즉, 창고 1000 - 로트 0.1

창고 1500 - 로트 0.15

디포 2000 로트 0.2

기능을 게시하십시오.


 int start(){ double lot,V= AccountBalance (); if (V< 1000 ){lot= 0.05 ; return ( 0 );}
  V= MathFloor ( AccountBalance ()/ 500 );lot= NormalizeDouble ((V* 5 )/ 100 , 2 );
   Alert ( "lot = " ,lot); return ( 0 );}
 
Roll :

가장 중요한 라인:

 double lot, V= AccountBalance ();
if (V< 1000 ) {lot= 0.05 ; return ( 0 );}
잔액이 1000 아래로 떨어지면 - 나는 일하지 않을 것입니다 - 이것은 정확합니다 !!! - MM, 결국 :)))
 
borilunad :

여기에서는 스테핑보다 부드러움이 더 적절하다고 생각합니다. 그리고 "사람이 필요로하는 것"에 관해서는 그가 여전히 필요한 것을 명확하게 이해하지 못한다는 것을 완벽하게 이해합니다!
아아아아?! - 글쎄, 그러면 추신이 적절합니다. "바냐, 좋아하는 노래를 들어라." 펠트 부츠에 대해 "그리고 자랑하지 마라." :)))
 
TarasBY :
아아아아?! - 글쎄, 그러면 추신이 적절합니다. "바냐, 좋아하는 노래를 들어라." 펠트 부츠에 대해 "그리고 자랑하지 마라." :)))


하지만 진지하게? 주식에서 계산하는 것이 균형에서보다 덜 위험하다는 것을 초보자에게 숨기는 이유는 무엇입니까?

일반적으로 AccountFreeMargin()에서 계산하고 차분함을 느낍니다! 그리고 부츠 없이! :))