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

 

Roll , 팁 감사합니다. 누군가 필요 하면 차트의 왼쪽 하단 모서리에 주석을 표시하는 기능을 만들었습니다.

void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}

 
하나의 스크립트에서 파일을 다시 여는 방법을 알려주세요: 파일을 엽니다 - 끝까지 봅니다 - 파일을 닫고 다시 열려고 하면 "파일 끝"이라고 표시됩니다...
 
안녕하세요! 누가 그런 문제를 겪을 수 있습니까? 통화 차트 창에서 차트 자체가 때때로 사라집니다. 그런 다음 업데이트를 작성하고 모든 것이 복원됩니다. 이때 Expert Advisors가 때때로 잘못 작동하기 시작합니다(조건 없이 거래 시작). 오늘, 최대 로트와 거래가 열렸습니다. 제때 눈치채고 2.5포인트 손실로 가렸는데 4월 수익이 혀처럼 핥아먹었어요 ㅠㅠ 대처법좀 알려주세요. 다음은 로트 정의 코드입니다. 글쎄, 이것은 어떤 식 으로든 발생해서는 안되는 것 같습니다.이것은 마지막 두 줄 때문이라고 생각합니다. 하지만 어떻게?
 //========================================================================                                                                              
//определение лота
//========================================================================

double Free = AccountFreeMargin ();
double One_Lot = MarketInfo ( Symbol (),MODE_MARGINREQUIRED);
double Step = MarketInfo ( Symbol (),MODE_LOTSTEP);
double Min_Lot = MarketInfo ( Symbol (),MODE_MINLOT);
double Max_Lot = MarketInfo ( Symbol (),MODE_MAXLOT);
LOT= NormalizeDouble ( AccountFreeMargin ()*RISK/ 100000 , 2 );
if (LOT*One_Lot > Free) // Не хватает даже..
     {                                         // ..на минимальн. лот:(
         Comment ( "денег нет  " );  
             return ( 0 );                           // ..и выход 
     }
     else Comment ( "деньга есть  " );
if (LOT<Min_Lot)
 LOT=Min_Lot;
if (LOT>Max_Lot)
 LOT=Max_Lot;
далее открытие ордера по условиям.
 
Lians :

안녕하세요!

다음과 같이 차트에 텍스트를 표시할 수 있는지 알려주실 수 있습니까?

다음과 같이 호출할 수 있도록 별도의 함수로 출력합니다.

이 기능을 보십시오.

 //+----------------------------------------------------------------------------+
void iPrint( bool print, string mess1, string mess2= "" , string mess3= "" , string mess4= "" , 
             int sz= 9 , color cl1= Aqua , color cl2= Aqua , color cl3= Aqua , color cl4= Aqua ) {
   string    NameGrafText, message, nm;
   int       i, y, k, LenStr, shift, Win_Num=- 1 , num= 0 ;
   color     cl;
   if (mess1== "" ) {
       Print ( "Func iPrint: Передана пустая строка, выходим" );
       return ;
      }
   Win_Num= WindowFind ( "Win_Inform" );
   if (print || Win_Num< 0 ) {
      message=mess1+mess2+mess3+mess4;
       Print (message); 
       return ;
      }
   k= ArraySize (Mass_Name_Message)- 1 ;
   if ( StringLen (mess1)> 0 ) num++;
   if ( StringLen (mess2)> 0 ) num++;
   if ( StringLen (mess3)> 0 ) num++;
   if ( StringLen (mess4)> 0 ) num++;
   for (i=k; i>= 0 ; i--) {                             
      NameGrafText=Mass_Name_Message[i];           
       if ( StringLen (NameGrafText)> 0 )
       if ( ObjectFind (NameGrafText)==Win_Num) {
         if (i+num>k) {
             ObjectDelete (NameGrafText);  
            Mass_Name_Message[i]= "" ;
            }
         else if (i+num<=k) {
            Mass_Name_Message[i+num]=Mass_Name_Message[i];
            y= ObjectGet (NameGrafText, OBJPROP_YDISTANCE );               // координата Y
             ObjectSet   (NameGrafText, OBJPROP_YDISTANCE , y+(sz+ 1 )*num); // координата Y
             ObjectSet   (NameGrafText, OBJPROP_COLOR , LightSeaGreen );     // цвет
            }
         }
      }
   shift=num;
   int v= GetTickCount ();
   for (i= 0 ; i<num; i++) {
      shift--;
      NameGrafText=Prefix+ "_Graf_Text_" +i+ "_" +sy+ "_" +v;
       int app= 0 ;
       while ( ObjectFind (NameGrafText)==Win_Num) {
         app++;
         NameGrafText=Prefix+ "_Graf_Text_" +i+ "_" +sy+ "_" +v+ "_" +app;
         }
      Mass_Name_Message[num- 1 -i]=NameGrafText;
       switch (i) {
         case 0 : message=mess1; cl=cl1; break ;
         case 1 : message=mess2; cl=cl2; break ;
         case 2 : message=mess3; cl=cl3; break ;
         case 3 : message=mess4; cl=cl4; break ;
         default :message=mess1; cl=cl1; break ;
         }
       ObjectCreate (NameGrafText, OBJ_LABEL , Win_Num, 0 , 0 );
       ObjectSetText (NameGrafText, message, sz, "Courier New" , cl);
       ObjectSet     (NameGrafText, OBJPROP_COLOR , cl);                   // цвет
       ObjectSet     (NameGrafText, OBJPROP_CORNER ,     2 );                 // угол
       ObjectSet     (NameGrafText, OBJPROP_XDISTANCE , 150 );               // координата Х
       ObjectSet     (NameGrafText, OBJPROP_YDISTANCE , 2 +(sz+ 1 )*shift);   // координата Y
       WindowRedraw ();
      }
   return ;
}
//+----------------------------------------------------------------------------+

차트에서 빈 Win_Inform 표시기 창을 찾고 사용 가능한 경우 메시지를 표시합니다. 그렇지 않은 경우 인쇄하십시오.

호출 예:

 //-------------------------------------------------------
   message1= StringConcatenate ( "Тик: " , GetTickCount (), " " );
   message2= StringConcatenate ( "Цена Bid: " , DoubleToStr (Bid,dg));
   iPrint(false, message1, message2, "" , "" , 9 , Aqua , DarkOrange );
   b= 4 ; c= 7 ;
   a=b+c;
   message1= StringConcatenate ( "a=" ,a, " " );
   message2= StringConcatenate ( "b=" ,b, " " );
   message3= StringConcatenate ( "c=" ,c);
   iPrint(false, message1, message2, message3, "" , 9 , Aqua , LimeGreen , DarkOrange );
   
   message1= StringConcatenate ( "Время: " , TimeToStr ( TimeCurrent ()), " " );
   message2= StringConcatenate ( "Тик: " , GetTickCount (), " " );
   message3= StringConcatenate ( "Время бара: " , TimeToStr (Time[ 0 ]), " " );
   message4= StringConcatenate ( "Цена Bid: " , DoubleToStr (Bid,dg));
   iPrint(false, message1, message2, message3, message4, 9 , Aqua , Aqua , Aqua , DarkOrange );
//-------------------------------------------------------

전역 수준에서 선언된 배열 문자열 Mass_Name_Message[10]을 사용합니다. 이것은 객체 이름을 저장하는 배열입니다. 필요에 따라 크기를 변경할 수 있습니다. 접두사 변수는 전문가의 이름을 저장합니다. 전문가 가 그래픽 개체와 함께 올바르게 작동 하려면 개체를 식별해야 합니다. 또한 전역 수준에서 선언되며 유형 문자열입니다. 당신은 아마 그것을 알아낼 것입니다 ...

예고편의 터키

파일:
 

내 기능에 약간의 문제가 발생했습니다.

void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}

예를 들어 "전문가 고문의 설정을 확인하고 F7을 눌러 설정 창을 여십시오"라는 줄에 댓글을 달면 긴 메시지가 잘립니다.

"설정 창을 열려면 고문의 설정을 확인하십시오"라는 메시지만 남고 텍스트가 창의 절반에도 도달하지 않았지만 잘립니다.

이 제한을 제거하는 방법을 알려주시겠습니까?

 

안 됩니다. 레이블의 최대 줄 길이는 62자입니다.

텍스트를 여러 줄(레이블)로 형식 지정 하거나 Comment()를 통해 작성 - 255자 있음

 
안녕하세요!
특정(사용자 지정) 주문 을 여는 문제가 발생했습니다.
이 문제를 해결해야 할 작은 코드를 작성하고 해결하는 것처럼 보이지만 순간이 있습니다.
임의의 수의 주문이 열릴 때 일반적으로 테스트가 끝날 때입니다.

아래는 코드 자체입니다.

 extern string Kolichestvo_orderov = "Количество единовременно открытых ордеров" ;
extern int OrederBuy = 1 ;
extern int OrederSell = 1 ;


int OrdS= 1 ,OrdB= 1 ,ticketBuy,ticketSell,lastticketSell= 0 ,lastticketBuy= 0 ;

//========================================================================================================//     
                                  //---- Открытие ордеров SELL ----//
//========================================================================================================//

if (OrdS<=OrederSell)
  { //----- start
 
if (trendDn==true && SthFast> 88.2 && SthSlow< 38.2 )
     {
ticketSell= OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 , 0 , 0 , 0 ,magick, 0 , Blue );OrdS++; //--- Если ордер открыт параметр OrdS увеличиваю 
     }
   } //-----end
          
//========================================================================================================//  
                                    //----Открытие ордеров BUY ----//
//========================================================================================================//  

if (OrdB<=OrederBuy)
  { //-----start

if (trendUp==true && SthFast< 11.8 && SthSlow> 61.8 )
      {
ticketBuy= OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 3 , 0 , 0 , 0 ,magick, 0 , Red );OrdB++; //--- Если ордер открыт параметр OrdB увеличиваю
      }

  } //------end
  

//------------------------------- Подсчет количества ордеров BUY & SELL ----------------------------------//
   
   if (ticketBuy<= OrdersHistoryTotal ()) //------ проверка тикетов тех  ордеров которые уже закрыты
   {
   for ( int ordBuy=lastticketBuy;ordBuy<= OrdersHistoryTotal ();ordBuy++) //--- перебор новых закрытых ордеров
    {
     if ( OrderSelect (ordBuy,SELECT_BY_POS,MODE_HISTORY)==true){ if ( OrderType ()==OP_BUY)OrdB--;lastticketBuy=ticketBuy;} //--- если добавился новый закрытый ордер бай, то параметр OrdB уменьшаю
    }
   }
  
   //-----
    
 if (ticketSell<= OrdersHistoryTotal ()) //------ проверка тикетов тех  ордеров которые уже закрыты
  {
 for ( int ordSell=lastticketSell;ordSell<= OrdersHistoryTotal ();ordSell++) //--- перебор новых закрытых ордеров
     {
     if ( OrderSelect (ordSell,SELECT_BY_POS,MODE_HISTORY)==true){ if ( OrderType ()==OP_SELL)OrdS--;lastticketSell=ticketSell;}  //--- если добавился новый закрытый ордер селл, то параметр OrdS уменьшаю

문제에 대한 더 간단한 해결책이 있다면 기꺼이 댓글을 달겠습니다.

 
Lians :

내 기능에 약간의 문제가 발생했습니다.

void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}

예를 들어 "조언자의 설정을 확인하고 설정 창을 열려면 F7을 누르십시오."

"설정 창을 열려면 고문의 설정을 확인하십시오"라는 메시지만 남고 텍스트가 창의 절반에도 도달하지 않았지만 잘립니다.

이 제한을 제거하는 방법을 알려주시겠습니까?

내 기능을 사용해보십시오. 이 페이지의 게시물 위에 있습니다. 각 줄의 길이가 64자를 넘지 않도록 줄을 여러 줄로 나눕니다. 내 f-tion은 이러한 파선을 다른 것 위에 하나씩 표시합니다. 또한 다음 메시지가 표시될 때 이전 메시지를 회색으로 색칠하여 더 높게 표시하고 함수 호출 시 지정한 색상으로 새 메시지를 다시 표시합니다.
 
히스토리를 업로드했는데 2012.01.16부터 2012.03.20까지 USDJPY에 구멍이 있다는 것을 우연히 발견했습니다. 재다운로드를 하려고 하니 단말기가 전체 히스토리를 가지고 있다고 답했습니다.
이 구멍을 다운로드하는 방법?
구멍 없이 스토리를 업로드하는 방법은 무엇입니까?
그리고 역사에 구멍이 있는지 여부를 어떻게 든 확인할 수 있습니까?
 
artmedia70 :
내 기능을 사용해보십시오. 이 페이지의 게시물 위에 있습니다. 각 줄의 길이가 64자를 넘지 않도록 줄을 여러 줄로 나눕니다. 내 f-tion은 이러한 파선을 다른 것 위에 하나씩 표시합니다. 또한 다음 메시지가 표시될 때 이전 메시지를 회색으로 색칠하여 더 높게 표시하고 함수 호출 시 지정한 색상으로 새 메시지를 다시 표시합니다.
감사합니다. 하지만 저에게는 너무 복잡하고 귀하의 기능은 한 번에 4개의 메시지를 표시하지만 하나가 필요합니다. 한 줄에 64자를 넘지 않는 것으로 나타났습니까?