누구든지 도와주세요!!! - 페이지 6

[삭제]  
extern string БАЙ = "NASTROI:";
extern int StopLoss = 200; // SL для открываемого ордера
extern int TakeProfit = 40;
extern double TrailingStop = 3;
extern double TrailingStep =0;
extern string ЛОТ = "NASTROI LOT:";
extern double Lots = 0.1; // Жестко заданное колич. лотов
extern double ДОЛЯ_ДЕП_ОСН_ОРД = 0; // доля от свободных средств 
extern double MAX_LOT = 40;
extern bool NORMALIZ = false;
extern string П = "EDGE:";
extern int МАКС_КОЛИЧ_ОРДЕРОВ = 111;
extern double БАЛАНС_МАРЖИ=1;
extern int  TFCLOSE=5;
extern string FLAG = "FLAGS:";
extern int BUY =1; //блок бай
extern int SELL =1; //блок сел
extern int MINIM=1;
extern double F=1;
extern int ДИСТАНЦИЯ_ВЫСТАВЛЕНИЯ_ОТЛОЖ = 5;
extern int MAGA = 7777; //магик № бай
extern double Z=10;

//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
bool DS=0,DB=0,ZB=0,ZS=0;

void deinit() {
   Comment("");
}

int start()
{
  //bool DS=0,DB=0,ZB=0,ZS=0;
  int R=1,CB=0;
  double Lts,
  FB=F,FS=F,MG,ZL=0,  
  Min_Lot,
  Lts1,
  TPD1;
  bool Cls_B = false,
  Cls_S = false,
  Opn_B = false,
  Opn_S = false;



  
  //00000000000000000000000000000000000000000000000000000
        //+------------РАСЧЁТ СТОИМОСТИ------------------------------------------------------+        
          // Стоимость ордеров
       
        if(БАЛАНС_МАРЖИ>0&&NORMALIZ==false)
        {
        RefreshRates();
        if(AccountFreeMargin()>AccountMargin())MG=AccountFreeMargin();
        //if(AccountFreeMargin()<AccountMargin())MG=0;
        if(БАЛАНС_МАРЖИ*AccountFreeMargin()<AccountMargin())R=0;
        Min_Lot = MarketInfo(Symbol(), MODE_MINLOT);
        
        if(Lots > 0 && ДОЛЯ_ДЕП_ОСН_ОРД == 0)
          Lts = Lots;
        if(ДОЛЯ_ДЕП_ОСН_ОРД > 0)
          Lts=MG/MarketInfo (Symbol(), MODE_MARGINREQUIRED)*ДОЛЯ_ДЕП_ОСН_ОРД;
        if(Lts > MAX_LOT)
          Lts = MAX_LOT;
        if(MG==0)Lts =0;
        if(MG>0&&Lts < Min_Lot&&MINIM==0)
        {
        R=0;
        Lts = 0;// Min_Lot;
        }
        if(MG>0&&Lts < Min_Lot&&MINIM==1)
        {
        Lts = Min_Lot;
        }
        Lts1=Lts;
        }
        //................................
        int m;
        if(NORMALIZ==true&&БАЛАНС_МАРЖИ>0)
        {
        if(AccountFreeMargin()>AccountMargin())MG=AccountFreeMargin();
        if(AccountFreeMargin()<AccountMargin())MG=0;
        Min_Lot = MarketInfo(Symbol(), MODE_MINLOT);
        //........................................................
        if(Lots > 0 && ДОЛЯ_ДЕП_ОСН_ОРД == 0)
          Lts = Lots;
        if(ДОЛЯ_ДЕП_ОСН_ОРД>0)
          m=БАЛАНС_МАРЖИ*MG/MarketInfo (Symbol(), MODE_MARGINREQUIRED)*ДОЛЯ_ДЕП_ОСН_ОРД/Min_Lot;
          Lts = m*Min_Lot;
        
        if(Lts > MAX_LOT)
          Lts = MAX_LOT;
        if(MG==0)Lts =0;
        if(MG>0&&Lts < Min_Lot)
        {
         Lts =Min_Lot;
        // R=O;
        }
         Lts= Lts;
        }
         
        //................................
        
        if(БАЛАНС_МАРЖИ==0)
        {
         RefreshRates();
        Min_Lot = MarketInfo(Symbol(), MODE_MINLOT);       
        if(Lots > 0 && ДОЛЯ_ДЕП_ОСН_ОРД == 0)
          Lts = Lots;
        if(ДОЛЯ_ДЕП_ОСН_ОРД > 0)
          Lts=AccountFreeMargin()/MarketInfo (Symbol(), MODE_MARGINREQUIRED)*ДОЛЯ_ДЕП_ОСН_ОРД;
        if(Lts > MAX_LOT)
          Lts = MAX_LOT;        
        if(Lts < Min_Lot&&MINIM==0)
        {
        R=0;
        Lts = 0;//Min_Lot;
        }
        if(Lts < Min_Lot&&MINIM==1)
        {
        Lts = Min_Lot;
        }
        Lts1=Lts;
        }
        
for(int x = 0; x < OrdersTotal(); x++)
        {
          if(OrderSelect(x, SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MAGA)
          switch(OrderType())
          {
          case 0:DB=1;break;
          case 1:DS=1;break;
          case 4:ZB=1;break;
          case 5:ZS=1;break;
          
           }
      //if(OrderType() == OP_BUYSTOP)ZB=1;
      //if(OrderType() == OP_SELLSTOP)ZS=1;
     
      //if(OrderType() == OP_SELL)DB=1;
         
      if(OrderType() == OP_SELLSTOP&&DB==1){OrderDelete(OrderTicket(),CLR_NONE);return(0);}
     
     // if(OrderType() == OP_BUY)DS=1;
      
      if(OrderType() == OP_BUYSTOP&&DS==1){OrderDelete(OrderTicket(),CLR_NONE);return(0);}
      
        
    
      //...................................................................

        //.................ТЕЙК И СТОП....................... 
       
for(int y = 0; y < OrdersTotal(); y++)
  {
    
    if(!OrderSelect(y, SELECT_BY_POS, MODE_TRADES)) continue;
    if(OrderSymbol() != Symbol()) continue;
    if(OrderMagicNumber() != MAGA) continue; 

  }
    if(OrderType() == OP_BUY&&OrderStopLoss()==0||OrderTakeProfit()==0&&StopLoss>0)
    {
      OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point ,
       OrderOpenPrice()+TakeProfit*Point ,MAGA, CLR_NONE);
       return(0);
    }

    if(OrderType() == OP_SELL&&OrderStopLoss()==0||OrderTakeProfit()==0&&StopLoss>0)
    {
      OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point ,
       OrderOpenPrice()-TakeProfit*Point ,MAGA, CLR_NONE);
       return(0);
    }
    }
 //....................................................................   
   //OOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
 
       if(ZB==0&&ZS==0&&DB==0&&DS==0        
         )          
        {
         Opn_B = true;
         Opn_S = true;
        }     
        
//OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

     // Открытие ордеров
        while(true)
        {     
  //OOOOOOOOOOOOOOOOOOOOOOOO ОСНОВНЫЕ OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

      
     
           if(Opn_B == true && BUY ==1)
          {
           // CS=1; 
           Alert("Попытка BUY");
            if(Opn_B == true && BUY ==1)
            OrderSend(Symbol(), OP_BUYSTOP,FB*Lts,Ask+Z*ДИСТАНЦИЯ_ВЫСТАВЛЕНИЯ_ОТЛОЖ*Point,2,0,0,"",MAGA,0,Aqua); 
                  if(Fun_Error(GetLastError()) == 1)  
              continue;
           // return(0);
          }
          //--------------------------------------------------
           
         
           if(Opn_S == true&&SELL==1)
          {
           // CB=1;
            Alert("Попытка SELL");
            if(Opn_S == true&&SELL==1)
            OrderSend(Symbol(), OP_SELLSTOP, FS*Lts,Bid-Z*ДИСТАНЦИЯ_ВЫСТАВЛЕНИЯ_ОТЛОЖ*Point,2,0,0,"",MAGA,0,Orange);//TimeCurrent()+TIMELIVE*60
                  if(Fun_Error(GetLastError()) == 1)
              continue;
            return(0);
          }                      
          break;
        }
        return(0);
     }
  
//+------------------------------------------------------------------+

int Fun_Error(int Error)
{
  switch(Error)
  {
    case 4:
      Alert("Торговый сервер занят. Пробуем ещё раз..");
    Sleep(3000);
    return(1);
    case 135:
      Alert("Цена изменилась. Пробуем ещё раз..");
    RefreshRates();
    return(1);
    case 136:
      Alert("Нет цен. Ждём новый тик..");
    while(RefreshRates() == false)
      Sleep(1);
    return(1);
    case 137:
      Alert("Брокер занят. Пробуем ещё раз..");
    Sleep(3000);
    return(1);
    case 146:
      Alert("Подсистема торговли занята. Пробуем ещё..");
    Sleep(500);
    return(1);
    case 2:
      Alert("Общая ошибка.");
    return(0);
  }
  
  //+------------------------------------------------------------------+
}

//.............................................................

[삭제]  
제안된 옵션 중 하나를 사용하여 작업하고 싶지 않고 이미 작성한 옵션이 작동하지 않을 가능성이 ..
 

먼저 START FUNCTION 내부에서 변수를 선언하도록 했습니다. 그리고 여기서 다시 25.

둘째, 두 번째 사이클이 필요한 이유는 무엇입니까? 왜 내 수표를 추가했습니까? 필요가 없다

 
주문을 반복하고 유형을 저장할 때 10번의 반복 주기를 수행할 필요가 없도록 티켓과 정류장을 즉시 저장합니다.
[삭제]  
Techno :
그의 코드는 심하게 엉망이고, 동일한 검사가 한 주기에 10번 이루어지며, 수정 기능에도 수많은 오류가 있습니다. 지연 만료 시간 대신 마술사가 있습니다.. 찌꺼기가 더 짧고 우리는 설명을 잘 못한 탓이다..

문제는 그들이 잘못 설명 했다는 것이 아니라 내가 원래 가지고 있는 것과 같은 오류로 다양한 옵션을 찾아보고 잘못 설명했다는 것입니다.
[삭제]  
Techno :

먼저 START FUNCTION 내부에서 변수를 선언하도록 했습니다. 그리고 여기서 다시 25.

둘째, 당신에게 두 번째 주기는 무엇입니까? 왜 내 수표를 추가했습니까? 필요가 없다


그것은 당신이 본 것과 거기에 있습니다 (시작 내부) 그런 다음 예금자를 제거하지 말고 다른 모든 것은 동일합니다 (재설정되지 않음)
 
sllawa3 :

그것은 당신이 본 것과 거기에 있습니다 (시작 내부) 그런 다음 예금자를 제거하지 말고 다른 모든 것은 동일합니다 (재설정되지 않음)

논리적으로 생각해 봅시다. 이 4개의 변수는 틱마다 재설정됩니다. 맞나요??

두 번째 질문은 주문이 없으면 이러한 변수에 아무 것도 할당되지 않고 0과 동일하게 유지됩니다. 맞습니까?

그리고 마지막 질문은 null인 경우 어떻게 null이 되지 않을 수 있습니까?

[삭제]  
그리고 일반적으로 수정 사항을 제거했습니다(두 번째 주기와 함께) ... 동일
[삭제]  
Techno :

논리적으로 생각해 봅시다. 이 4개의 변수는 매 틱마다 재설정됩니다. 맞죠??

두 번째 질문은 주문이 없으면 이러한 변수에 아무 것도 할당되지 않고 0과 동일하게 유지됩니다. 맞습니까?

그리고 마지막 질문은 null인 경우 어떻게 null이 되지 않을 수 있습니까?


글쎄, 자신을보십시오 .. 나도 그렇게 생각했습니다 ...
 

무작위로 제거하고 넣는 것이 아니라 생각할 필요가 있습니다. 여기 당신이 모든 것을 알고 모든 것에 대해 생각하지만 결과는 터무니없는 것이 있습니다.

간단히 말해서, 이제 각 주문에 티켓이 수반되고 팝업이 표시되는 주문 루프를 작성하고 다른 것은 작성하지 마십시오. 여기에 코드를 게시하십시오.