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

 
Roman. : Beyler söyleyin bana - DC sitesinden terminal kurulumunu indirdim, strateji test cihazındaki baykuşları tam olarak bu DC'nin tırnakları üzerinde test etmek istiyorum, test cihazında F2'ye bastığımda - ve aletlerin tırnaklarını indiriyor fırlatıyor böyle bir pencereden ... Seçilen DC'den alıntılar indirmek mümkün mü?
Roman , sadece bir şey tavsiye edebilirim: DC web sitesinde ve geçmişlerine bakın.
 

Güzel gün. .dll'imi komut dosyasına bağlamak istiyorum. Bu örneği test etmeye çalıştım:

 #import "user32.dll"
     int     MessageBoxA( int hWnd, string lpText, string lpCaption, int uType);
#import

int start()
{
    MessageBoxA( 0 , "Some" , "Some" , 0 );
   
     return ;
}

Çalışıyor, bir pencere beliriyor. dll'mi yazdı:

 #ifndef DLLTEST_H
#define DLLTEST_H

#pragma once

extern "C" __declspec(dllexport) int __stdcall Test()
{
     return 2 ;
}

#endif // DLLTEST_H

Artıları düzenli bir programa bağlantılardan kontrol ettim, her şey çalışıyor, her şey yolunda. Ama script'e bağlamaya çalıştığımda hiçbir şey olmuyor, dll'ime bağlanmak isteyip istemediğimi bile sormuyor. Görünüşe göre, böyle bir ihracatı anlamıyor. Peki, soru şu: Ne tür bir ihracattan anlıyor? Visual C++'dan mı? Ya da belki yanlış bir şey yaptım ve bir tef ile bazı özel ihracata ihtiyaç var mı?

 
Tünaydın! Stokastik'in bu versiyonunda, düz çizgilerin yapısını eklemeye karar verdim (grafikte)
aşırı alım/aşırı satım bölgeleri.

Geçmişten "eski" satırların silinmesiyle ilgili bir sorun oluştu. Yanlış olan nedir ve nelere dikkat etmeliyim?

 //+------------------------------------------------------------------+
//|                                              Stochastic_flat     |
//|                                         Copyright © 2012 Fox.RM  |
//|                                               fox.rm@mail.ru     |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012 Fox.RM"
#property link       "fox.rm@mail.ru"

//----
#property indicator_separate_window
#property indicator_buffers 4

//---- fan style
#property indicator_color1 Red
#property indicator_color2 Black
#property indicator_color3 Blue
#property indicator_color4 DarkGray

#property indicator_style1 0
#property indicator_style2 0
#property indicator_style3 0
#property indicator_style4 0
#property indicator_width4 2
#property indicator_level1 88.2
#property indicator_level2 11.8
 
#property indicator_levelcolor DarkGray
#property indicator_levelstyle 0

//---- basic fan indicator parameters
extern bool Show_STOCH_1=true;
extern int K_period1= 13 ;
extern int S_period1= 1 ;
extern bool Show_STOCH_2=true;
extern int K_period2= 34 ;
extern int S_period2= 1 ;
extern bool Show_STOCH_3=true;
extern int K_period3= 89 ;
extern int S_period3= 1 ;
extern bool Show_STOCH_4=true;
extern int K_period4= 233 ;
extern int S_period4= 1 ;
extern int delete = 2 ;

//---- indicator buffers
double MainBuffer1[];
double MainBuffer2[];
double MainBuffer3[];
double MainBuffer4[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int init()
  {
//---- stochastic line 1 (fast)
   if (Show_STOCH_1 ==true){Show_STOCH_1= DRAW_LINE ; }
   else 
    {Show_STOCH_1= DRAW_NONE ; }
   SetIndexBuffer ( 0 ,MainBuffer1);
   SetIndexStyle ( 0 ,Show_STOCH_1, 0 );
   SetIndexLabel ( 0 , "fast WPR  ( " +K_period1+ " )" );
   
//---- stochastic line 2 (basic)
   if (Show_STOCH_2 ==true){Show_STOCH_2= DRAW_LINE ; }
   else 
    {Show_STOCH_2= DRAW_NONE ; }
   SetIndexBuffer ( 1 ,MainBuffer2);
   SetIndexStyle ( 1 ,Show_STOCH_2);
   SetIndexLabel ( 1 , "basic WPR ( " +K_period2+ " )" );
   
//---- stochastic line 3 (flat)
   if (Show_STOCH_3 ==true){Show_STOCH_3= DRAW_LINE ; }
   else 
    {Show_STOCH_3= DRAW_NONE ; }
   SetIndexBuffer ( 2 ,MainBuffer3);
   SetIndexStyle ( 2 ,Show_STOCH_3, 0 );
   SetIndexLabel ( 2 , "slow WPR ( " +K_period3+ " )" );
   
//---- stochastic line 4 (control)
   if (Show_STOCH_4 ==true){Show_STOCH_4= DRAW_LINE ; }
   else
    {Show_STOCH_4= DRAW_NONE ; }
   SetIndexBuffer ( 3 ,MainBuffer4);
   SetIndexStyle ( 3 ,Show_STOCH_4, 0 , 2 );
   SetIndexLabel ( 3 , "control WPR ( " +K_period4+ " )" );

   
//---- name for DataWindow and indicator subwindow label   
   IndicatorShortName ( "Stochastic_flat" );
  }

//----
   return ( 0 );

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+

int deinit()
  {
//---- 
   ObjectsDeleteAll ();
//----
   return ( 0 );
  }

//+------------------------------------------------------------------+
//| Stochastic_fan                                                   |
//+------------------------------------------------------------------+

int start()
  {
   int     i,shift,limit,y= 0 ,counted_bars= IndicatorCounted ();
   double x1,x2;
   datetime y1,y11,y2,y22;
//---- Plot defined timeframe on to current timeframe   
 
   limit= Bars -counted_bars;
   //---stroim stohastik
   for (i= 0 ,y= 0 ;i<limit;i++,y++)
     {
      MainBuffer1[i]= iStochastic ( NULL , 0 ,K_period1, 1 ,S_period1, 0 , 0 ,MODE_MAIN,y);
      MainBuffer2[i]= iStochastic ( NULL , 0 ,K_period2, 1 ,S_period2, 0 , 0 ,MODE_MAIN,y);
      MainBuffer3[i]= iStochastic ( NULL , 0 ,K_period3, 1 ,S_period3, 0 , 0 ,MODE_MAIN,y);
      MainBuffer4[i]= iStochastic ( NULL , 0 ,K_period4, 1 ,S_period4, 0 , 0 ,MODE_MAIN,y);
    
     //---flat zona
  
     
     if (MainBuffer1[i] < 11.8 ) //---pervoe uslovie
     {
     x1=Low[i];
     y1=Time[i]; //--- opredelyaem koordinaty dlya x1,y1
     }
     if (MainBuffer1[i] > 88.2 ) //---vtoroe uslovie
     {
     x2=High[i];
     y2=Time[i];   //--- opredelyaem koordinaty dlya x2,y2
     }
     }
     for (i= Bars ; i> 0 ; i--)
    {
     //--- opredelyaem koordinaty dlya x11,y11 
     if (Low[i]<x1)
     {
     y11=Time[i];
     }
     //--- opredelyaem koordinaty dlya x22,y22
     if (High[i]>x2)
     {
     y22=Time[i];
     }
     }    
     
   
   string up_line = "upline" ;
   string down_line = "downline" ;
     flatlineup(up_line+ TimeToStr (Time[i]), y2,x2,y22,x2, Red , 1 );
     flatlinedown(down_line+ TimeToStr (Time[i]), y1,x1,y11,x1, Blue , 1 );
  
    
   dellline(up_line,i);
     
     //----
     
   return ( 0 );
  }
//+------------------------------------------------------------------+
void flatlineup( string labebe, datetime time1, double price1, datetime time2, double price2, color colir, int W)
  {
     ObjectCreate (labebe, OBJ_TREND , 0 ,time1,price1,time2,price2);
   ObjectSet (labebe, OBJPROP_COLOR , colir);
   ObjectSet (labebe, OBJPROP_STYLE , 0 );
   ObjectSet (labebe, OBJPROP_RAY, 0 );
   ObjectSet (labebe, OBJPROP_WIDTH ,W);   
   ObjectSet (labebe, OBJPROP_BACK , true);
   }
   void flatlinedown( string labebe1, datetime time1, double price1, datetime time2, double price2, color colir, int W)
  {
   ObjectCreate (labebe1, OBJ_TREND , 0 ,time1,price1,time2,price2);
   ObjectSet (labebe1, OBJPROP_COLOR , colir);
   ObjectSet (labebe1, OBJPROP_STYLE , 0 );
   ObjectSet (labebe1, OBJPROP_RAY, 0 );
   ObjectSet (labebe1, OBJPROP_WIDTH ,W);   
   ObjectSet (labebe1, OBJPROP_BACK , true);
    }
   
void dellline( string name_line, int i)   //--- первый вариант с удалением линий
  {
     string name = ObjectName (i);
     if ( StringFind (name,name_line)!=- 1 ) ObjectDelete (name);

 // if (StringFind(name,name_line)!=-1)del1++;
 // if (del1>2)ObjectDelete(name);
   }
void dellline( string name_line)   //--- второй вариант с удалением линий  
{
string name, dellname; 
bool del = false;
for ( int i= ObjectsTotal (); i>= 0 ;i--)
    {
if (del == false){ //---при этом условии должна происходить идентификация первой линии 
name = ObjectName (i); //--выполняется при первом обращении к функции
dellname=name;
del = true;}
if (del == true){
if ( StringFind (dellname,name_line)!=- 1 ) ObjectDelete (dellname);
dellname=name;}
}   
} 
     //---Были и промежуточные варианты, которые также не дали желаемого результата.

Aşağıdaki örnekte işe yaradı. Ama gerçekten değil. Üst çizgiler yenilerinin görünmesiyle birlikte alt çizgiler ise hemen kaldırılır. Hangisi yüzünden?

 //------ функция удаляющая ненужные линии

void dellline( string name_line_up, string name_line_down) 
{
string name_l;
int obj= ObjectsTotal ( OBJ_TREND ); // --- в этой версии интуитивно добавил свойство OBJ_TREND
for ( int i=obj; i>= 0 ; i--)
{
name_l= ObjectName (i);
if ( StringFind (name_l,name_line_up)!=- 1 ) ObjectDelete (name_l);
if ( StringFind (name_l,name_line_down)!=- 1 ) ObjectDelete (name_l);
}}

Bu, işlevin neden eklemeden olması gerektiği gibi çalışmadığı ek bir soruyu gündeme getiriyor.

OBJ_TREND , bence bu durumda kardinal değişiklikler getirmiyor mu?

Ardından, ana kodda satır adlarıyla birkaç deney yapıldı.

 //-------------- первый вариант (рабочий)

string up_line = "upline_" , down_line = "downline_" ;
 
     flatlineup(up_line+ TimeToStr (Time[i]), y2,x2,y22,x2, Red , 1 );
     flatlinedown(down_line+ TimeToStr (Time[i]), y1,x1,y11,x1, Blue , 1 );
     dellline(up_line, down_line);

//---TimeToStr (Time[i]) указывал в имени тренд лайн в теле функции

//--------------- второй вариант (нерабочий)

string up_line = "upline_" + TimeToStr (Time[i]); //--или пробовал StringConcatenate()
string down_line = "downline_" + TimeToStr (Time[i]); //--или пробовал StringConcatenate()
 
     flatlineup(up_line, y2,x2,y22,x2, Red , 1 );
     flatlinedown(down_line, y1,x1,y11,x1, Blue , 1 );
     dellline(up_line, down_line);

TimeToStr(Time[i]) ana koddaki bir değişkende belirtildi.


Soru. İkinci seçeneğin neden çalışmadığı ortaya çıktı (yani, işlev

ikinci varyanta uygulanan dellline(), adları atanmış satırları kaldırmadı

up_line ve down_line değişkenleri?

Ve bir önceki gönderideki son soruyu çoğaltacağım, o ekranda. buna bir cevap bul

yapamadım.

Teşekkür ederim!

 
rustein :

Teşekkürler, şu koşulla denedim:

hala hata veriyor

böyle dene

if ( SummBullLots() > 0 ){ double BullAveragePrice = NormalizeDouble (BullSummOpenPrice()/SummBullLots(), Digits );}



 
yosuf :
Lütfen söyleyin, belirli bir zamanda açık pozisyonların sayısını gösteren bir gösterge var mı? Daha da iyisi, kaçının SATIN ve kaçının HÜCRE olduğunu belirtirseniz.
Orada.
Dosyalar:
iexposure4.mq4  11 kb
 
Solree :

Güzel gün. .dll'imi komut dosyasına bağlamak istiyorum. Bu örneği test etmeye çalıştım:

Çalışıyor, bir pencere beliriyor. dll'mi yazdı:

Artıları düzenli bir programa bağlantılardan kontrol ettim, her şey çalışıyor, her şey yolunda. Ama script'e bağlamaya çalıştığımda hiçbir şey olmuyor, dll'ime bağlanmak isteyip istemediğimi bile sormuyor. Görünüşe göre, böyle bir ihracatı anlamıyor. Peki, soru şu: Ne tür bir ihracattan anlıyor? Visual C++'dan mı? Ya da belki yanlış bir şey yaptım ve bir tef ile bazı özel ihracata ihtiyaç var mı?

MT4 klasöründe, MQL4'teki tüm durumlar için bir C++ kodu örneği vardır. Bu kodu derleyin ve sizinkini oraya yapıştırın. Sizinkiyle örnek arasındaki farkı hemen bulacaksınız.

 
Danışmanın eylemlerini bir dosyaya kaydetmek istiyorum
MQL editörüne yapılan referanstan bir örnek aldım, kendim için biraz değiştirdim
 int init()  {
     int handle= FileOpen ( "OrdersReport.csv" , FILE_WRITE | FILE_CSV , "\t" );
   if (handle< 0 ) return ( 0 );
   // запишем заголовок в файл
   FileWrite (handle, "#" , "Цена открытия" , "Время открытия" , "Символ" , "Лоты" );
   return ( 0 );  }

int deinit()  {   return ( 0 );  }

int start()  {
  .........................
...........................
   int handle= FileOpen ( "OrdersReport.csv" , FILE_READ | FILE_WRITE , "\t" );
   if (handle< 0 ) return ( 0 );
 
     // записываем в файл только открытые ордера
   for ( int pos= 0 ;pos< OrdersTotal ();pos++)
    {
     if ( OrderSelect (pos,SELECT_BY_POS,MODE_TRADES)==false) continue ;
     FileWrite (handle, OrderTicket (), OrderOpenPrice (), OrderOpenTime (), OrderSymbol (), OrderLots ());
    }
     FileClose (handle);   //Закрытие файла, ранее открытого функцией FileOpen().
}
   return ( 0 );
  }


ve sonuç olarak, siparişler açılmasına rağmen OrdersReport.csv dosyası boştur.
 
griha :
Danışmanın eylemlerini bir dosyaya kaydetmek istiyorum
MQL editörüne yapılan referanstan bir örnek aldım, kendim için biraz değiştirdim


ve sonuç olarak, siparişler açılmasına rağmen OrdersReport.csv dosyası boştur.

Şu şekilde deneyin:

 //+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
int handle;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init() 
  {
   handle= FileOpen ( "OrdersReport.csv" , FILE_WRITE | FILE_CSV , "\t" );
   if (handle< 0 ) return ( 0 );
// запишем заголовок в файл
   FileWrite (handle, "#" , "Цена открытия" , "Время открытия" , "Символ" , "Лоты" );
   return ( 0 );  
  }

int deinit() { 
   FileClose (handle);   //Закрытие файла, ранее открытого функцией FileOpen().
 return ( 0 );  
 }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start() 
  {
   if (handle< 0 ) return ( 0 );
// записываем в файл только открытые ордера
   for ( int pos= 0 ;pos< OrdersTotal ();pos++)
       if ( OrderSelect (pos,SELECT_BY_POS,MODE_TRADES)) 
         FileWrite (handle, OrderTicket (), OrderOpenPrice (), OrderOpenTime (), OrderSymbol (), OrderLots ());
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
Fox_RM :
Tünaydın! Stokastik'in bu versiyonunda, düz çizgilerin yapısını eklemeye karar verdim (grafikte)

yapamadım.

Teşekkür ederim!

 //------ функция удаляющая ненужные линии

void dellline( string name_line_up, string name_line_down)
  {
   string name_l;
   int obj= ObjectsTotal (); // найдем количество объектов 
   for ( int i=obj- 1 ; i>= 0 ; i--) // obj-1 т.к. >=0 
     {
      name_l= ObjectName (i); // узнаем имя
       if ( ObjectType (name_l)!= OBJ_TREND ) continue ; // если не трендлиния продолжим цикл * for(int i=obj-1; i>=0; i--)
       if ( StringFind (name_l,name_line_up)!=- 1 ) ObjectDelete (name_l);
       if ( StringFind (name_l,name_line_down)!=- 1 ) ObjectDelete (name_l);
     }
   }
//+------------------------------------------------------------------+
İsim = zaman1+fiyat1+zaman2 ile trend çizgileri oluşturun, deinit olarak silinmesi kolay.
 
Mathemat :
Roman , sadece bir şey tavsiye edebilirim: DC web sitesinde ve geçmişlerine bakın.
Ve öyle yaptı. Müşteri desteğinde onlara zaten yazdım. Mathemat'a teşekkür ederim .