[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 279

 

Kim bilir, soru şu ki, iki satır var, biri bir dizi mumda yeni ortaya çıkan yüksekleri takip ediyor, diğeri düşükleri takip ediyor. Çizgiler arasındaki mesafe 50'den fazla olduğunda dikey bir çizgi çizilmelidir. Dikey bir çizgi için bir koordinat - zamana ihtiyacınız vardır. Çizgiler arasındaki mesafenin 50'den fazla olduğu zamanı çıkarmak için ne kullanılabilir? Kendim bir şey düşünemiyorum.

vert line ObjectCreate kullanarak çizmek istedi ... zamansız yapılabilirse ne kullanılmalı?
 
waitra >> :

Ya da belki de basitçe "danışmanın tarihinde henüz tek bir düzen olmadığını" belirleyen böyle bir işlev var mı? - bu yeterli olur

Bu bilmiyorum. Burada kimse cevap verebilir mi?

Yine de, I. Kim'in formunu yeniden yapmaya çalışırsanız? Bu:

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru            |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                  |
//|  Описание : Возвращает количество позиций.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                            |
//|    sy - наименование инструмента   (""   - любой символ,  |
//|                                     NULL - текущий символ)          |
//|    op - операция                   (-1   - любая позиция)       |
//|    mn - MagicNumber                (-1   - любой магик)               |
//+----------------------------------------------------------------------------+
int NumberOfPositions ( string sy = "" , int op = - 1 , int mn = - 1 ) {
  int i , k = OrdersTotal ( ) , kp = 0 ;
  if ( sy = = "0" ) sy = Symbol ( ) ;
  for ( i = 0 ; i < k ; i + + ) {
    if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ) {
      if ( OrderSymbol ( ) = = sy | | sy = = "" ) {
        if ( OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_SELL ) {
          if ( op < 0 | | OrderType ( ) = = op ) {
            if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) kp + + ;
          } } } } }  return ( kp ) ; }

Onlar. MODE_TRADES yerine MODE_HISTORY alın - yani. kapatılan ve silinen siparişler arasından sipariş seçilir

Ardından (fonksiyonun adını değiştirin):

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru            |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                  |
//|  Описание : Возвращает кол-во ордеровиз истории счета  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                           |
//|    sy - наименование инструмента   (""   - любой символ, |
//|                                     NULL - текущий символ)        |
//|    op - операция                   (-1   - любая позиция)       |
//|    mn - MagicNumber                (-1   - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfPos_HISTORY ( string sy = "" , int op = - 1 , int mn = - 1 ) {
  int i , k = OrdersTotal ( ) , kp = 0 ;
  if ( sy = = "0" ) sy = Symbol ( ) ;
  for ( i = 0 ; i < k ; i + + ) {
    if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) ) {
      if ( OrderSymbol ( ) = = sy | | sy = = "" ) {
        if ( OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_SELL ) {
          if ( op < 0 | | OrderType ( ) = = op ) {
            if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) kp + + ;
          } } } } }  return ( kp ) ; }

Deneyin - işe yarayacak mı, olmayacak mı?

 

Arkadaşlar, iyi günler.


Söyle bana, lütfen, böyle bir şey.


Örneğin, "fiyat mumu" hareketli ortalamayı geçtiğinde bir pozisyon açmam gerekiyor.

Şimdiye kadar, yalnızca mum çubuğu ortalamanın üstünde/altında kapandığında/açıldığında sinyalleri sınıflandırabiliyorum...

( iMA( .....) >Kapat[1] veya iMA(....) >Aç[0] )

ama mevcut mumun kapanmasını ve bir sonrakinin açılmasını beklemek için değil, halihazırda MA'nın üstünde/altındaysa, mevcut mumla bile girmek için nasıl yapılır?


Şimdiden çok teşekkür ederim.

 
Morzh09 >> :

Arkadaşlar, iyi günler.


Söyle bana, lütfen, böyle bir şey.


Örneğin, "fiyat mumu" hareketli ortalamayı geçtiğinde bir pozisyon açmam gerekiyor.

Şimdiye kadar, yalnızca mum çubuğu ortalamanın üstünde/altında kapandığında/açıldığında sinyalleri sınıflandırabiliyorum...

( iMA( .....) >Kapat[1] veya iMA(....) >Aç[0] )

ama mevcut mumun kapanmasını ve bir sonrakinin açılmasını beklemek yerine, halihazırda MA'nın üzerinde/altındaysa, mevcut mumda bile girmek için nasıl yapılır?


Şimdiden çok teşekkür ederim.

Ve neyi sevmezsin:

iMA(....) >[0] Açılsın mı? - sıfır mevcut mumdur.

 
rid >> :

Ve neyi sevmezsin:

iMA(....) >[0] Açılsın mı? - sıfır mevcut mum

bu doğrudur, ancak örneğin, MA altında açıldıktan sonra fiyatın (genellikle haberlerde) MA'yı uzun bir mumla kırdığı ve yükselip düştüğü durumlar vardır....

benim açılış kriterlerimi kullanırsak bu tür hareketler gözden kaçabilir...

bu nedenle, fiyat şu anda ortalamanın üstünde / altındaysa bir pozisyon açmak ve bu mumun kapanmasını ve bir sonraki mumun açılmasını beklememek istiyorum.

 

Bu nasıl olabilir:

 if (  iMA ( . . . . . . . . , 1 ) > Close [ 1 ]  & & iMA ( . . . . . . . , 0 ) < Open [ 0 ]  ) // продажа

(Önceki çubuktaki MA, önceki çubuğun kapanış fiyatından büyükse ve mevcut çubuktaki MA, mevcut çubuğun açılış fiyatından düşükse, sat)

 

Lütfen yardım edin iki gündür uğraşıyorum ama anlayamıyorum. Kovalev'in ders kitabından kodu aldım, bir satın alma emri açmaya çalışıyorum ve "130 hatası" cevabını alıyorum.Zararı durdur ve kar al sıfıra ayarlanırsa işlem başarılı olur.

kod

nt f_Open_Ord(int İpucu)
{
int Bilet, // Sipariş numarası
MN; // Sihirli sayı

double SL, // StopLoss (fiyat değerine göre)
TP; // TakeProf (fiyat değerine göre)
//------------------------------------------------ --------------- 3 --
while(g_Mas_Tip[Tip]==0) // Kadar ..
{ //.. Başarı yok
if (SL<g_Level_new) // İzin verilenden az ise..
SL=(g_Level_new+20); // .. sonra geçerli
if (TP<g_Level_new)
// İzin verilenden az ise..
TP=(g_Level_new+20); // ..sonra geçerli
MN=ZamanAkım(); // Basit Sihirli Sayı
f_Inform(13,İpucu); // Açma girişimi ile ilgili mesaj
if (Tip==0) // Buy'u açacağız
{
SL=Teklif - SL*Puan; // Zararı Durdur (fiyat)
SL=NormalizeÇift(SL, Rakamlar);
TP=Teklif + TP*Puan; // TakeProfit (fiyat)
TP=NormalizeÇift(TP, Rakamlar);
Ticket=SiparişGönder(Symbol(),0,g_Lots_New,Ask,5,1.46500,1.47500,"",MN);
err=GetLastError();
Comment("hata numarası",hata);
if (Ticket>0) f_Inform(4);
//if (Ticket<0) f_Inform(25);

Kod revize edildi.Her şey düzgün çalışıyor.Sanırım hata kodda değil. DC-Broko/

 

Üzgünüm, acele et. OrderSend fonksiyonundaki 1.46500 ve 1.47500 değerleri sırasıyla SL ve TP ile değiştirilmelidir.

 
VNG писал(а) >>

Üzgünüm, acele et. OrderSend fonksiyonundaki 1.46500 ve 1.47500 değerleri sırasıyla SL ve TP ile değiştirilmelidir.

Ve SL ve TP neye eşittir? Yukarıdaki kodda olduğu gibi sıfır ise, her şey doğrudur. Bir hata oluşturulmalıdır

 

Duraklar, şu şekilde hesaplanan g_Level_new global değişkeninden alınır g_Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL )

Neden: