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

 
alsu :
"double türünde olmalı" yerine "double olarak global bir değişkende saklanmalıdır". Hissetmek

Güzel gün. "Farkı hissetmeye" çalıştım ve ortaya çıkan buydu ... Yani. GV değişkenini aşağıdaki şekilde tanımlamak (biraz uzatma ile) mümkündür. Bir GV değişkeni, tabiri caizse, herhangi bir türden bir değişkeni saklayabileceğiniz bir "kutu"dur ( string hariç, çünkü bir GV değişkeninin yalnızca double türü vardır ve tür azaltma kuralına göre , tür indirgemesine izin verilmez. , yani dizeden izin verilmez çift yap). Ve GV değişkenine koyacağımız bu değişken "bu kutunun şeklini alacak" (yani orijinal tipten double tipe dökülecek)... Bir şekilde böyle mi?

Yanıtınız için şimdiden teşekkür ederiz.
 

Güzel gün. Soru şu. Kitabında S.K. MQL 4'e göre , " Alım Satım İşlemleri " bölümünde, "Emir Değiştirme" bölümünde, beyan edilen fiyatı komut dosyasının eklendiği yere daha yakın olan bekleyen bir emri değiştiren basit bir komut dosyası örneği vardır. diğer bekleyen emirlerin fiyatlarından (modifyorderprice.mq4) aşağıdaki gibidir :

 //--------------------------------------------------------------------
// modifyorderprice.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
int start()                                     // Спец.функция start
  {
   int Tral= 10 ;                                 // Дист. приближения
   string Symb= Symbol ();                         // Финанс. инструмент
   double Dist= 1000000.0 ;                       // Предустановка
   double Win_Price= WindowPriceOnDropped ();     // Здесь брошен скрипт
//--------------------------------------------------------------- 2 --
   for ( int i= 1 ; i<= OrdersTotal (); i++)           // Цикл перебора ордер
     {
       if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         //------------------------------------------------------ 3 --
         if ( OrderSymbol ()!= Symb) continue ;     // Не наш фин.инструм.
         if ( OrderType ()< 2 ) continue ;           // Рыночный ордер  
         //------------------------------------------------------ 4 --
         if ( NormalizeDouble ( MathAbs ( OrderOpenPrice ()-Win_Price), Digits )
            < NormalizeDouble (Dist, Digits ))     // Выбираем ближайший
           {
            Dist= MathAbs ( OrderOpenPrice ()-Win_Price); // Новое значение
             int     Tip   = OrderType ();           // Тип выбранного орд.
             int     Ticket= OrderTicket ();         // Номер выбранн. орд.
             double Price = OrderOpenPrice ();     // Цена выбранн. орд.
             double SL    = OrderStopLoss ();       // SL выбранного орд.
             double TP    = OrderTakeProfit ();     // TP выбранного орд.
           }                                     // Конец if
        }                                       // Конец анализа ордера
     }                                           // Конец перебора орд.
//--------------------------------------------------------------- 5 --
   if (Tip== 0 )                                   // Если отложенных нет
     {
       Alert ( "По " ,Symb, " отложенных ордеров нет" );
       return ;                                   // Выход из программы
     }
//--------------------------------------------------------------- 6 --
   while (true)                                   // Цикл закрытия орд.
     {
Veya bu komut dosyasında blok 5-6'da bir hata var, çünkü (gördüğüm gibi) dize
 if (Tip== 0 )                                   // Если отложенных нет
gibi görünmeli
 if (Tip< 2 )                                   // Если отложенных нет
tüm beklemede olmayan (piyasa) emir türleri 0 veya 1 türünde, yani 2'den az olduğundan.

Ya da ben bir şeyi yanlış anladım.

Soru: Lütfen açıklığa kavuşturun: Bir şeyi yanlış anladıysam, bana tam olarak ne olduğunu söyleyin?

Yanıtınız için şimdiden teşekkür ederiz

 
7777877 :

Güzel gün. Soru şu. Kitabında S.K. MQL 4'e göre , "Emir Değiştirme" bölümündeki "Ticaret İşlemleri" bölümünde , beyan edilen fiyatı, kodun eklendiği yere daha yakın olan bekleyen bir emri değiştiren basit bir komut dosyası örneği vardır. bekleyen diğer emirlerin fiyatları (

Veya bu komut dosyasında blok 5-6'da bir hata var, çünkü (gördüğüm gibi) dize

gibi görünmeli

tüm beklemede olmayan (piyasa) emir türleri 0 veya 1 türünde, yani 2'den az olduğundan.

Ya da ben bir şeyi yanlış anladım.

Soru: Lütfen açıklığa kavuşturun: Bir şeyi yanlış anladıysam, bana tam olarak ne olduğunu söyleyin?

Yanıtınız için şimdiden teşekkür ederiz

canım...buraya bu kadar büyük harflerle yazmaya gerek yok...yoksa gözlerini kırabilirsin :-)

ve bu... soru sormadan önce.. Metaeditor'daki YARDIM'ı okumayı denediniz mi? TÜMÜ? yeni başlayanlar için... türler ve şeyler hakkında saçma sapan şeyler sormamak için...

===

OrderSend() işlevi için işlem türü. Aşağıdaki değerlerden herhangi biri olabilir:

Devamlı Anlam Tanım
OP_BUY 0 Satın almak
OP_SELL 1 Satış
OP_BUYLIMIT 2 Bekleyen sipariş SATIN AL LIMIT
OP_SELLLIMIT 3 Bekleyen sipariş SATIŞ LİMİTİ
OP_BUYSTOP 4 Bekleyen sipariş SATIN AL DUR
OP_SELLSTOP 5 Bekleyen sipariş SATIŞ DURDUR
 

ama türüne göre - orada her şey yolunda ... tam olarak == 0 olmalı ...

çünkü 3. blokta

      if ( OrderType ()< 2 ) continue ;           // Рыночный ордер  

piyasa emirleri atlandı...

===

ve sipariş listesinde gecikmeler varsa, TYPE değişkeni 0'a eşit olmayacaktır.

---

 

Tünaydın. Lütfen bana söyle.

Örneğin, MA için Level_R ve Level_S'den geçmek için bir kriterimiz var:

 int Criterion;
double MA_1=iMA(......,0);
double MA_2=iMA(......,1);
double MA_3=iMA(......,2);
if (MA_1 > Level_S_1 && Ma_2 <= Level_S_2 MA_3 <= Level_S_3) Criterion=1;
if (MA_1 > Level_R_1 && Ma_2 <= Level_R_2 MA_3 <= Level_R_3) Criterion=2;

Soru: Yeni bir geçiş oluşana kadar 1 veya 2 değerini (geçişe bağlı olarak) tutacak ve sonraki tiklerde sıfıra sıfırlanmayacak şekilde Kriter nasıl hatırlanır.

 
Dış Başlangıç değişkeninin veya başka bir işlevin tanımını genel değişkenlere taşıyın , kapatın...
 
Aleksander :
Dış Başlangıç değişkeninin veya başka bir işlevin tanımını genel değişkenlere taşıyın, kapatın...
Bunu denedim ve o lanet etti ... beceriksizliğimi ima etti.
 
o zaman, eğer metin küçükse - bütün .. satırlarını düzenleyin 20-30 eğer, artık yok
 
int Criterion, Crit;
int start()
 {
  Crit= Fun_Criterion( Criterion); 

  switch(Crit)
   {
   /************/
   }
return(0);
 }

Fun_Criterion(int Criterion)
 {
  if(MA_1 > Level_S_1 && Ma_2 <= Level_S_2 MA_3 <= Level_S_3) Criterion=1;
  if(MA_1 < Level_R_1 && Ma_2 >= Level_R_2 MA_3 >= Level_R_3) Criterion=2;

  return(Criterion);
 }
 

Neden aracılar var? EĞLENCE işlevi nedir?

 int Criterion;
int start () {
  Fun_Criterion(); 

   switch ( Criterion )
   {
   /************/
   }
   return ( 0 );
}
//-----------------------------
void Fun_Criterion() {
   if (MA_1 > Level_S_1 && Ma_2 <= Level_S_2 && MA_3 <= Level_S_3) Criterion= 1 ;
   if (MA_1 < Level_R_1 && Ma_2 >= Level_R_2 && MA_3 >= Level_R_3) Criterion= 2 ;
 }

ve VE && olması gerektiği yerde görünmüyor...