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

 
Konstebl :

고문이 거래를 열지 않는 이유를 알려주세요. 오류 130을 작성합니다. 손절매 = 55 포인트(따옴표 문자 4개)


고문을 약간 업그레이드했습니다. 잘못된 개시 가격 에 대한 보호 삽입.

 extern int PeriodLWMA= 14 ;
 extern int tp= 55 ;
 extern int sl= 55 ;
 extern double MaxRisk= 10 ;
 extern double Lot= 0.1 ;
 bool NewBar()
  {
       static datetime lastbar = 0 ;
       datetime curbar = iTime( Symbol (), 0 , 0 );
       if (lastbar!=curbar)
       {
             lastbar=curbar;
             return ( true );
       }
       return ( false );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
     int ticket;
     double price,takeprofit,stoploss,Lots;
//----
     double frUP = iFractals ( NULL , 0 ,MODE_UPPER, 3 );
     double frLOW = iFractals ( NULL , 0 ,MODE_LOWER, 3 );
     double lwma = iMA ( NULL , 0 ,PeriodLWMA, 0 , MODE_LWMA , PRICE_CLOSE , 0 );
    frUP = iFractals ( NULL , 0 ,MODE_UPPER, 3 );
    frLOW = iFractals ( NULL , 0 ,MODE_LOWER, 3 );
       double MaxLot = MarketInfo( Symbol (),MODE_MAXLOT);
       double MinLot = MarketInfo( Symbol (),MODE_MINLOT);
       Lots = NormalizeDouble (AccountFreeMargin()/ 10 *MaxRisk/ 1000 , 2 );
     if (Lots>MaxLot)
       Lots = MaxLot;
     else Lots=Lot;
     if (Lots<MinLot)
       Lots = Lot;
//----
     static bool flag = true ;
     if (NewBar())
      flag = true ;
       if (Ask>lwma && frUP>Ask && frUP != EMPTY_VALUE && flag)
         {
         price = NormalizeDouble (frUP+(Ask-Bid)+ 30 * Point , Digits );
         takeprofit = NormalizeDouble (price+tp* Point , Digits ); 
         stoploss = NormalizeDouble (price-sl* Point , Digits );
         ticket = OrderSend ( Symbol (),OP_BUYSTOP,Lots,price, 5 ,stoploss,takeprofit, "Fractal" , 123 , 0 ,Blue);
         if (ticket> 0 && GetLastError ()== 0 )
            flag = false ;
// Печатаем ошибку только в том случае, если она действительно случилась
         else Print ( "Ошибка № " , GetLastError (), " OP_BUYSTOP Ask=" ,DoubleToStr(Ask, 8 ), " Bid=" ,DoubleToStr(Bid, 8 ), " OpenPrice=" ,DoubleToStr(price, 8 ), " sl=" ,DoubleToStr(stoploss, 8 ), " tp=" ,DoubleToStr(takeprofit, 8 ));
             return (ticket);
         }
//-------------------------------------------------------------------
     if (NewBar())
      flag = true ;
       if (Bid<lwma && frLOW<Bid && frLOW> 0 && frLOW!= EMPTY_VALUE && flag)
         {
         price = NormalizeDouble (frLOW- 30 * Point , Digits );
         takeprofit = NormalizeDouble (price-tp* Point , Digits );
         stoploss = NormalizeDouble (price+sl* Point , Digits );
         ticket = OrderSend ( Symbol (),OP_SELLSTOP,Lots,price, 5 ,stoploss,takeprofit, "Fractal" , 123 , 0 ,Red);
         if (ticket> 0 && GetLastError ()== 0 )
            flag = false ;
// Печатаем ошибку только в том случае, если она действительно случилась
           else Print ( "Ошибка № " , GetLastError (), " OP_SELLSTOP Ask=" ,DoubleToStr(Ask, 8 ), " Bid=" ,DoubleToStr(Bid, 8 ), " OpenPrice=" ,DoubleToStr(price, 8 ), " sl=" ,DoubleToStr(stoploss, 8 ), " tp=" ,DoubleToStr(takeprofit, 8 ));
             return (ticket);
         }
  }
 
Vinin :

그리고 이 옵션 은 적합하지 않습니다. 물론 최고는 아니다


Posomtrel, 하지만 불행히도 그렇지 않습니다. 촛불을 있는 그대로 그리고 싶습니다.
 
덕분에!
 
Vinin :

그것은 작동하지만 결과는 다를 것입니다. 당신이 기대하는 것이 아닙니다

무슨 일이야? 그리고 아직 익숙하지 않은 기능으로 이 프로그램을 탐색하는 것은 어렵습니다.


미리 감사드립니다!

 
arabon :

무슨 일이야? 그리고 아직 익숙하지 않은 기능으로 이 프로그램을 탐색하는 것은 어렵습니다.


미리 감사드립니다!


 double CalculateProfit_last() { //прибыль от последенй сделки
   double Profit = 0 ;
   int cnt;
   if ( OrdersTotal ()!= 0 )
   {
     cnt = OrdersTotal () - 1 ;
         OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == MagicNumber)
           if (OrderType() == OP_BUY || OrderType() == OP_SELL) Profit = OrderProfit();
   }
   Profit= 0.0 ;   // Зачем вести расчеты, если потом их обнулить
   Print (Profit);
   return (Profit);
}
그리고 어떤 순서를 말씀하시는 건가요? 마지막 열림 또는 마지막 닫힘 정보. 그가 유일한 사람이라면 질문은 사라집니다.
 
Vinin :

그리고 어떤 순서를 말씀하시는 건가요? 마지막 열림 또는 마지막 닫힘 정보. 그가 유일한 사람이라면 질문은 사라집니다.

마지막으로 마감된 주문의 이익을 계산해야 합니다. 물론 이것이 유일한 주문은 아닙니다.


추신: 제가 왜 그것을 흐릿하게 말했는지조차 모르겠습니다 =)

   }
   Profit= 0.0 ;   // Зачем вести расчеты, если потом их обнулить
   Print (Profit);
   return (Profit);
}
 


안녕하세요. 이 코드는 테스트입니다. 첫 번째 질문은 줄 번호 매기기를 표시하는 방법입니다.

주제에 대한 추가 정보: 위의 코드에서 " ca[1]=Low[100]; 이름 바꾸기   이 옵션에서만 발생" 배열의 데이터 재할당 루프 내에서만 발생합니다. 아마도 배열이 차트 데이터를 표시하도록 할당된 경우 데이터를 한 번만 입력할 수 있습니까?  

int start(){
int i=0 ;int k=0 ;
 while(i<=5000) 
   { 
  k=0 ;
  ca[i]=0;
 volume[i]=0;
 while(k<=10)
 {ca[i]= ca[i]+Volume[i+k]*(High[i+k]+Low[i+k])/2;
  volume[i]=volume[i]+Volume[i+k];
   k=k+1; } ca[i]=ca[i]/volume[i];
    i=i+1;//ca[1]=Low[100]; Переобозначение происходит только в этом варианте  
  }
  ca[1]=Low[100];//Переобозначение не происходит программа не видит  
  int a1=1;
  while(a1==1)//Переобозначение не происходит программа не видит
  {ca[1]=Low[100];
  a1=a1+1;}
  return(0);
  }
 
그것이 작동하는 방식입니다. 분명히 나는 내 자신의 질문에 대답했습니다.
int start(){
int i=0 ;int k=0 ;
 while(i<=500) 
   { 
  k=0 ;
  ca1[i]=0;
 volume[i]=0;
 while(k<=10)
 {ca1[i]= ca1[i]+Volume[i+k]*(High[i+k]+Low[i+k])/2;
  volume[i]=volume[i]+Volume[i+k];
   k=k+1; } ca1[i]=ca1[i]/volume[i];
    i=i+1;
  }
 ca1[0]=Low[100];//Переобозначение  происходит программа  Видит
  //Цикл заполнения массива для отображения значений функции 
   i=0;
    while(i<=500)//Переобозначение происходит программа  Видит
     {ca[i]=ca1[i];
      i=i+1;}
  return(0);
  }
 
TG :
매수 및 매도 포지션에 대해 지분(AccountEquity())과 마진(AccountMargin())이 어떻게 분리되는지 알려주십시오.

I.Kim의 사용자 정의 기능에서 이러한 기능을 찾을 수 있는지 확인하십시오. https://www.mql5.com/ru/forum/131859

와 함께

 
안타깝게도.
leonid553 :

I.Kim의 사용자 정의 기능에서 이러한 기능을 찾을 수 있는지 확인하십시오. https://www.mql5.com/ru/forum/131859

와 함께


불행히도 찾을 수 없습니다