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

 
_SS_ :
Açık bir siparişin türü nasıl belirlenir?

Sipariş türü()

Ama aslında bir ders kitabıyla başlamanız gerekiyor... :) Ya da en azından MetaEditor'da F1'i kullanın.

int Sipariş Türü ( )
Halihazırda seçili olan siparişin işlem türünü döndürür. Aşağıdaki değerlerden biri olabilir:
OP_BUY - satın alma pozisyonu,
OP_SELL - satış pozisyonu,
OP_BUYLIMIT - belirli bir seviyeye ulaştıktan sonra satın almak için bekleyen bir emir, mevcut fiyat seviyenin üzerinde,
OP_BUYSTOP - belirli bir seviyeye ulaştıktan sonra satın almak için bekleyen bir emir, mevcut fiyat seviyenin altında,
OP_SELLLIMIT - belirli bir seviyeye ulaştıktan sonra bekleyen bir satış emri, mevcut fiyat seviyenin altında,
OP_SELLSTOP - belirtilen seviyeye ulaşıldığında, mevcut fiyat seviyenin üzerindeyken satış için bekleyen bir emir.
Sipariş, OrderSelect() işlevi kullanılarak önceden seçilmelidir.
Misal:
 int sipariş_türü;
  if(OrderSelect(12, SELECT_BY_POS)==true)
    {
     order_type=OrderType();
     // ...
    }
  başka
    Print("OrderSelect() bir hata döndürdü - ",GetLastError());
 
gheka :

çift NormalizeÇift ( çift değer, int basamak)

değer - Kayan nokta değeri. --- Bu nasıl?
rakamlar - Kesinlik biçimi, ondalık noktadan sonraki basamak sayısı (0-8). --- 1.29800 gibi 5 karakter çıkıyor değil mi?

Kayan nokta değeri, double türünde gerçek bir sayıdır.

Rakamlar yerine int türünde bir değişken kullanın

Örneğin int dg= MarketInfo ( Symbol ( ) , MODE_DIGITS);

 
extern double Lot=0.01; // Жестко заданное колич. лотов
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;


bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell

//--------------------------------------------------------------- 3 --
// Учёт ордеров


for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;

if(Total!=0 || time==Time[1])return;

static int KolBars;



if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)


{

KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия

}




// Торговые критерии

// Критерий откр. Buy


Opn_B=true;

//--------------------------------------------------------------- 7 --


if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}

}




Lütfen yardım edin 3. kez rica ediyorum. Yeni bir mum göründüğünde (önceki 2 mumun yeşil olması şartıyla) alış pozisyonu açan ve pozisyonun açıldığı mum kapandığında veya bir sonraki mumun kapanışında pozisyonu kapatan bir temel danışman.

Yukarıda gördükleriniz, her yeni mum çıktığında, açılış kriterlerine tepki vermeden pozisyon açıyor ve bir pozisyonun nasıl kapatılacağı bana ulaşmıyor, ders kitabında ve forumlarda bulamadım.

 
artmedia70 :

Kayan nokta değeri, double türünde gerçek bir sayıdır.

Rakamlar yerine int türünde bir değişken kullanın

Örneğin int dg= MarketInfo ( Symbol ( ) , MODE_DIGITS);


Bana şunu yazdılar: "Normalize (NormalizeDouble()), maksimum / minimum lotta bir sınır olup olmadığını kontrol edin, eğer beş basamaklıysa - stop'u ve karı 10 kat artırın."


Belgeler şöyle diyor: "Kayan noktalı bir sayıyı belirtilen doğruluğa yuvarlama. StopLoss, TakeProfit'in hesaplanan değerleri ve ayrıca bekleyen emirlerin açılış fiyatının değerleri, doğrulukla, değeriyle normalleştirilmelidir. hangi önceden tanımlanmış değişken Digits içinde saklanır."

Ders kitabında bulamadım anladığım kadarıyla şu anki fiyatı, StopLoss ve TakeProfit'i NormalizeDouble üzerinden normalleştirmem gerekiyor ---? evet ise, tam olarak nasıl?

çift NormalizeÇift ( çift değer, int basamak)

çifte değer -- bunun yerine örneğin Ödül koyabilirim

int basamaklar -- ve burada dg değişkeni MarketInfo'ya eşittir ( Symbol ( ) , MODE_DIGITS); ???

 
gheka :


Bana şunu yazdılar: "Normalize (NormalizeDouble()), maksimum / minimum lotta bir sınır olup olmadığını kontrol edin, eğer beş basamaklıysa - stop'u ve karı 10 kat artırın."


Belgeler şöyle diyor: "Kayan noktalı bir sayıyı belirtilen doğruluğa yuvarlama. StopLoss, TakeProfit'in hesaplanan değerleri ve ayrıca bekleyen emirlerin açılış fiyatının değerleri, doğrulukla, değeriyle normalleştirilmelidir. hangi önceden tanımlanmış değişken Digits içinde saklanır."

Ders kitabında bulamadım anladığım kadarıyla şu anki fiyatı, StopLoss ve TakeProfit'i NormalizeDouble üzerinden normalleştirmem gerekiyor ---? evet ise, tam olarak nasıl?

çift NormalizeÇift ( çift değer, int basamak)

çifte değer -- bunun yerine örneğin Ödül koyabilirim

int basamaklar -- ve burada dg değişkeni MarketInfo'ya eşittir ( Symbol ( ) , MODE_DIGITS); ???

int StopLoss=50; // Nokta olarak Kaybı Durdur

int TakeProfit=150; // Puan olarak TakeProfit

int SetOrderDistance=50; // Bekleyen siparişlerin puan olarak verilmesi için mesafe

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------

int pt=MarketInfo(Sembol(), MODE_POINT); // Alıntı para biriminde nokta boyutu

int dg=MarketInfo(Symbol(),MODE_DIGITS); // Enstrüman fiyatındaki ondalık noktadan sonraki basamak sayısı

int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL); // Puan olarak izin verilen minimum zararı durdur/kar al seviyesi

double pa=MarketInfo(Symbol(), MODE_ASK); // Fiyatını sor

double pb=MarketInfo(Symbol(), MODE_BID); // Teklif fiyatı

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------

double slB=NormalizeDouble(pa-StopLoss*pt, dg); // Buy pozisyonu için StopLoss fiyat seviyesinin normalleştirilmesi

double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // Alış pozisyonu için TakeProfit fiyat seviyesinin normalleştirilmesi

double slS=NormalizeDouble(pb+StopLoss*pt, dg); // Bir Satış pozisyonu için StopLoss fiyat seviyesinin normalleştirilmesi

double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // Bir Satış pozisyonu için TakeProfit fiyat seviyesinin normalleştirilmesi

double SetB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // Bekleyen bir Satın Alma emri verme fiyatının normalleştirilmesi

double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // Bekleyen bir Satış emri verme fiyatının normalleştirilmesi

double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // Bekleyen Buy emrinin StopLoss fiyat seviyesinin normalleştirilmesi

double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // Bekleyen bir Satın Alma emrinin TakeProfit fiyat seviyesinin normalleştirilmesi

double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // Bekleyen bir Satış emrinin StopLoss fiyat seviyesinin normalleştirilmesi

double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Bekleyen bir Satış emrinin TakeProfit fiyat seviyesinin normalleştirilmesi

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------

Anlamak... :)

Ve StopLevel'in varlığını da unutmayın - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);

Bu değerden daha az olmayacak şekilde, duraklar ve kalkışlar için minimum mesafeyi kontrol edin.

 
artmedia70 :

int StopLoss=50; // Nokta olarak Kaybı Durdur

int TakeProfit=150; // Puan olarak TakeProfit

int SetOrderDistance=50; // Bekleyen siparişlerin puan olarak verilmesi için mesafe

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------

int pt=MarketInfo(Sembol(), MODE_POINT); // Alıntı para biriminde nokta boyutu

int dg=MarketInfo(Symbol(),MODE_DIGITS); // Enstrüman fiyatındaki ondalık noktadan sonraki basamak sayısı

int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL); // Puan olarak izin verilen minimum zararı durdur/kar al seviyesi

double pa=MarketInfo(Symbol(), MODE_ASK); // Fiyatını sor

double pb=MarketInfo(Symbol(), MODE_BID); // Teklif fiyatı

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------

double slB=NormalizeDouble(pa-StopLoss*pt, dg); // Buy pozisyonu için StopLoss fiyat seviyesinin normalleştirilmesi

double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // Alış pozisyonu için TakeProfit fiyat seviyesinin normalleştirilmesi

double slS=NormalizeDouble(pb+StopLoss*pt, dg); // Bir Satış pozisyonu için StopLoss fiyat seviyesinin normalleştirilmesi

double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // Bir Satış pozisyonu için TakeProfit fiyat seviyesinin normalleştirilmesi

double SetB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // Bekleyen bir Satın Alma emri verme fiyatının normalleştirilmesi

double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // Bekleyen bir Satış emri verme fiyatının normalleştirilmesi

double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // Bekleyen bir Buy emrinin StopLoss fiyat seviyesinin normalleştirilmesi

double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // Bekleyen bir Satın Alma emrinin TakeProfit fiyat seviyesinin normalleştirilmesi

double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // Bekleyen bir Satış emrinin StopLoss fiyat seviyesinin normalleştirilmesi

double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Bekleyen bir Satış emrinin TakeProfit fiyat seviyesinin normalleştirilmesi

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------

Anlamak... :)

Ve StopLevel'in varlığını da unutmayın - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);

Bu değerden daha az olmayacak şekilde, duraklar ve kalkışlar için minimum mesafeyi kontrol edin.


Çok teşekkürler!!! Bunu halledeceğim! )
 
Bir fonksiyon nasıl oluşturulur ve çağrılır?
 

Windows'u değiştirdi. Uyarı penceresi açılmayı durdurdu. sesli bir bildirim var, bir günlük girişi var, ancak kayan pencere açılmıyor.

Terminali temizledim, her şeyi yeniden derledim. Nedeni ne olabilir?

 
_SS_ :
Bir fonksiyon nasıl oluşturulur ve çağrılır?
Bir kez daha tekrar ediyorum - ders kitabını okuyun , materyali inceleyin ... :)
 
artmedia70 :
Bir kez daha tekrar ediyorum - ders kitabını okuyun , materyali inceleyin ... :)
Denedim, çalışmıyor!