[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 65

 

Roll , ipucu için teşekkürler, birinin ihtiyacı olursa grafiğin sol alt köşesinde bir yorum görüntüleme işlevi yaptım:

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);
}

 
Dosyayı bir komut dosyasında tekrar nasıl açacağımı söyle: Dosyayı açıyorum - sonuna kadar bakıyorum - dosyayı kapatıyorum, tekrar açmaya çalıştığımda "dosya sonu" yazıyor...
 
Merhaba! Söyleyin bana, böyle bir sorunla karşılaşan var mı: Para birimi tablosunun penceresinde, grafiğin kendisi bazen kayboluyor. sonra bir güncelleme yazar ve her şey geri yüklenir. Bu sırada Expert Advisor'lar bazen hatalı çalışmaya başlıyor (koşulsuz anlaşmalar açıyor). Bugün, maksimum lotlu bir anlaşma açıldı. Zamanında iyi fark ettim ve 2,5 puanlık bir kayıpla kapattım ama Nisan karı bir dil gibi yalandı, bununla nasıl başa çıkacağımı söyleyin. İşte parti tanımlama kodu. Eh, bu hiçbir şekilde olmamalı gibi görünüyor, bunun son iki satırdan kaynaklandığından şüpheleniyorum. Ama nasıl?
 //========================================================================                                                                              
//определение лота
//========================================================================

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 :

Merhaba!

Lütfen bana bir grafikte metin görüntülemenin mümkün olup olmadığını söyler misiniz, bunun gibi bir şey:

ayrı bir işlev olarak çıktı alın, böylece buna şöyle bir şey diyebilirsiniz:

Şu fonksiyona bakın:

 //+----------------------------------------------------------------------------+
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 ;
}
//+----------------------------------------------------------------------------+

Grafikte boş bir Win_Inform gösterge penceresi arar ve varsa, içindeki mesajları görüntüler. Değilse, yazdırın.

Çağrı örneği:

 //-------------------------------------------------------
   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 );
//-------------------------------------------------------

Global düzeyde bildirilen Mass_Name_Message[10] dizi dizesini kullanır. Bu, nesne adlarını depolamak için bir dizidir. Boyutu ihtiyaçlarınıza göre değiştirebilirsiniz. Önek değişkeni uzmanın adını saklar, uzmanın grafik nesnelerle doğru çalışması için nesnelerini tanımlaması gerekir. Ayrıca global düzeyde bildirilir ve string türündedir. Muhtemelen anlayacaksın...

karavanda türkiye

Dosyalar:
 

İşlevimle ilgili küçük bir sorunla karşılaştım:

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);
}

Uzun bir mesajı kesiyor, örneğin "Uzman Danışmanınızın ayarlarını kontrol edin, ayarlar penceresini açmak için F7 tuşuna basın" satırına yorum yapmaya çalışırsanız.

sadece şunu bırakır: "Ayarlar penceresini açmak için danışmanınızın ayarlarını kontrol edin" ve ardından metin pencerenin yarısına bile ulaşmasa da kesin.

Lütfen bana bu sınırlamayı nasıl kaldıracağımı söyler misiniz?

 

Hiçbir şekilde, etiketteki maksimum satır uzunluğu = 62 karakter.

metni birden çok satıra (etiket) biçimlendirin veya Comment() ile yazın - 255 karakter var

 
Tünaydın!
Belirli (kullanıcı tanımlı) sayıda sipariş açma sorunuyla karşılaştım.
Bu sorunu çözmesi gereken ve çözecek gibi görünen küçük bir kod yazdım, ancak anlar var
genellikle testin sonuna doğru, isteğe bağlı sayıda sipariş açıldığında.

Aşağıda kodun kendisidir.

 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 уменьшаю

Sorunun daha basit çözümleri varsa, yorum yapmaktan memnuniyet duyarım.

 
Lians :

İşlevimle ilgili küçük bir sorunla karşılaştım:

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);
}

Uzun bir mesajı kesiyor, örneğin "Uzman Danışmanınızın ayarlarını kontrol edin, ayarlar penceresini açmak için F7 tuşuna basın" satırına yorum yapmaya çalışırsanız.

sadece şunu bırakır: "Ayarlar penceresini açmak için danışmanınızın ayarlarını kontrol edin" ve ardından metin pencerenin yarısına bile ulaşmasa da kesin.

Lütfen bana bu sınırlamayı nasıl kaldıracağımı söyler misiniz?

Benim işlevimi dene. Bu sayfadaki yayınınızın üstünde. Satırı, her satırın uzunluğu 64 karakterden fazla olmayacak şekilde birkaç satıra bölün. F-tion'ım bu kesik çizgileri üst üste gösteriyor. Ayrıca bir sonraki mesaj görüntülendiğinde eskileri gri ile renklendirip daha yükseğe çıkartır ve yeni mesajı tekrar fonksiyon çağrıldığında belirtilen renkte gösterir.
 
Geçmişi yükledim, yanlışlıkla 2012.01.16'dan 2012.03.20'ye kadar USDJPY'de bir boşluğum olduğunu öğrendim. Yeniden indirmeye çalıştığımda, terminal tüm geçmişe sahip olduğumu söyledi.
Bu delik nasıl indirilir?
Deliksiz bir hikaye nasıl yüklenir?
Ve tarihte delikler olup olmadığını bir şekilde kontrol etmek mümkün mü?
 
artmedia70 :
Benim işlevimi dene. Bu sayfadaki yayınınızın üstünde. Satırı, her satırın uzunluğu 64 karakterden fazla olmayacak şekilde birkaç satıra bölün. F-tion'ım bu kesik çizgileri üst üste gösteriyor. Ayrıca bir sonraki mesaj görüntülendiğinde eskileri gri ile renklendirip daha yükseğe çıkartır ve yeni mesajı tekrar fonksiyon çağrıldığında belirtilen renkte gösterir.
Teşekkür ederim, ama benim için çok karmaşık ve işlevin aynı anda 4 mesaj gösteriyor, ama bir taneye ihtiyacım var. Bir satırda en fazla 64 karakter çıkıyor mu?
Neden: