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

 
Vinin :

Victor, başbakana bak lütfen.
 
glasha :
Victor, başbakana bak lütfen.

Testere
 
dimon74 :

OrderSend() (anladığım kadarıyla) her kene üzerinde ateşlenir. Sorunu çözmek için, başlatma işlevinden önce bir değişken bildirin, örneğin int H=0 .

Diğer kod:

.........

eğer ( H==0)

{

OrderSend(falan filan);

}

H=1;

Ve cebire ihtiyacınız yok. Ve kısıtlama için OrdersTotal () kullanmamak daha iyidir.


bu anlaşılabilir, her şey benim için çalışıyor, yani 1 sipariş açıyorum ve bir sonraki kene açılmıyor

ikinci düzen, ikincisi yalnızca birincisi kapandığında gereklidir

 

Eğer yanılmıyorsam, o zaman belki öyledir?

int H=0;

int F=SiparişToplam();

.........

eğer(F<1)

{

eğer ( H==0)

{

Sipariş Gönder (falan filan);

}

H=1;}

 
gheka :

Eğer yanılmıyorsam, o zaman belki öyledir?

int H=0;

int F=SiparişToplam();

.........

eğer(F<1)

{

eğer ( H==0)

{

OrderSend(falan filan);

}

H=1;}

total = CountTrades();
if (total < 1 ) {
ticket = OrderSend
}

int CountTrades() {
   int count = 0;
   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
      OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         if (OrderType() == OP_SELL || OrderType() == OP_BUY) count++;
   }
   return (count);
}
 
gheka :


bu anlaşılabilir, her şey benim için çalışıyor, yani 1 sipariş açıyorum ve bir sonraki kene açılmıyor

ikinci düzen, ikincisi yalnızca birincisi kapandığında gereklidir

Buraya bak.
 

Hepinize iyi günler. Danışman yazma konusunda güçlü değilim, bu konuyu incelemeye çalıştım ama yeni başladım ve benim için oldukça zor. Fiyat hareketli ortalamayı geçtiğinde fırsatlar açacak ve fiyat geri döndüğünde, zararı durdur veya takip eden durdurma ile kapatacak bir Uzman Danışman yazmak istiyorum. Böyle bir danışmanın bir örneğini buldum, ancak takip eden bir stop veya stoploss yok ve anlaşmalar sadece kavşakta açılıp kapanıyor. Kendimde bilgi eksikliğim var. Lütfen, takip eden durdurma ve durdurma kaybını eklemeniz gereken birine ve çalışması için doğru şekilde nasıl yapılacağına yardım edin:

# mülkiyet telif hakkı "Jake Sunders"

#özellik bağlantısı "feloq@mail.ru"



#define DURUM_KARE 0

#define STATE_LONG 1

#define STATE_SHORT 2



//---- giriş parametreleri

extern int MAPeriod=26;
dış çift LotNumber=1.0;
harici çift sondaki durdurma = 50;
harici çift StopLoss= 50;


//---- genel değişkenler

int CurrentState;

int MyOrderTicket;

//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+

int init()

{

//----

if (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > Kapat[0])

CurrentState = STATE_SHORT;

yoksa CurrentState = STATE_LONG;

MyOrderTicket = 0;
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
//----
int hata;
çiftMA;
MA = iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0);
if (CurrentState == STATE_LONG)
{
if (MA > Kapat[1]) // hareketli ortalama kapanış fiyatının üzerinde
{
CurrentState = STATE_SHORT;
// satmak için çevir
//---açıldıysa pozisyonu kapat
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotsNumber, Bid, 3, CLR_NONE))
{
hata = GetLastError();
Print("Kapanış pozisyonunda hata: ", hata);
dönüş(0);
}
MyOrderTicket = 0;
}
Yeniler();
//--- uzun pozisyon başarıyla kapatıldı
//--- şimdi bir satış pozisyonu aç
//--- mevcut fonları kontrol et
MyOrderTicket = OrderSend(Symbol(), OP_SELL, LotsNumber, Bid, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
eğer (MyOrderTicket<0)
{
hata = GetLastError();
Print("Hata açma konumu: ", hata);
MyOrderTicket = 0;
}
}
}
başka
{
if (MA < Kapat[1]) // hareketli ortalama kapanış fiyatının altında
{
CurrentState = STATE_LONG;

// satın almak için çevir
//---açıldıysa pozisyonu kapat
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotsNumber, Sor, 3, CLR_NONE))
{
hata = GetLastError();
Print("Kapanış pozisyonunda hata: ", hata);
dönüş(0);
}
MyOrderTicket = 0;
}
Yeniler();
//--- kısa pozisyon başarıyla kapatıldı
//--- şimdi bir satın alma pozisyonu açın
//--- mevcut fonları kontrol et
MyOrderTicket = OrderSend(Symbol(), OP_BUY, LotsNumber, Ask, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
eğer (MyOrderTicket<0)
{
hata = GetLastError();
Print("Hata açma konumu: ", hata);
MyOrderTicket = 0;
}
}
}
//----
dönüş(0);
}

 

Millet, söyleyin lütfen! Bir mum veya mumların bitiminde bir pozisyon nasıl açılır ve kapanır? Yani yeni bir mum açılınca açılır, kapanır.

aynı mumu veya verilen herhangi birini kapatırken? ve herhangi bir pozisyon açma koşulu için mumun kapanışındaki göstergenin değerleri nasıl alınır?

 
gheka :

Yaklaşık 50-100 pozisyon için aynı fiyattan açık alım satım emirlerim var,

benim için sadece bir sipariş nasıl açılır, yanılmıyorsam OrdersTotal()

ve eğer öyleyse, nasıl kullanılır? ve nereye koymak? aksi takdirde bu fonksiyon olmadan tüm cebirin sürülmesi gerektiğini hissediyorum.


İşlem yapmak için yanlış koşullar, iki MA örneğine bakın.
 
Superjake :

Hepinize iyi günler. Danışman yazma konusunda güçlü değilim, bu konuyu incelemeye çalıştım ama yeni başladım ve benim için oldukça zor. Fiyat hareketli ortalamayı geçtiğinde fırsatlar açacak ve fiyat geri döndüğünde, zararı durdur veya takip eden durdurma ile kapatacak bir Uzman Danışman yazmak istiyorum. Böyle bir danışmanın bir örneğini buldum, ancak takip eden bir stop veya stoploss yok ve anlaşmalar sadece kavşakta açılıp kapanıyor. Ben kendim bilgi eksikliği çekiyorum. Lütfen, takip eden durdurma ve durdurma kaybını eklemeniz gereken birine ve çalışması için doğru şekilde nasıl yapılacağına yardım edin:

# mülkiyet telif hakkı "Jake Sunders"

#özellik bağlantısı "feloq@mail.ru"



#define DURUM_KARE 0

#define STATE_LONG 1

#define STATE_SHORT 2



//---- giriş parametreleri

extern int MAPeriod=26;
dış çift LotNumber=1.0;
harici çift sondaki durdurma = 50;
harici çift StopLoss= 50;


//---- genel değişkenler

int CurrentState;

int MyOrderTicket;

//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+

int init()

{

//----

if (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > Kapat[0])

CurrentState = STATE_SHORT;

yoksa CurrentState = STATE_LONG;

MyOrderTicket = 0;
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
//----
int hata;
çiftMA;
MA = iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0);
if (CurrentState == STATE_LONG)
{
if (MA > Kapat[1]) // hareketli ortalama kapanış fiyatının üzerinde
{
CurrentState = STATE_SHORT;
// satmak için çevir
//---açıldıysa pozisyonu kapat
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotsNumber, Bid, 3, CLR_NONE))
{
hata = GetLastError();
Print("Kapanış pozisyonunda hata: ", hata);
dönüş(0);
}
MyOrderTicket = 0;
}
Yeniler();
//--- uzun pozisyon başarıyla kapatıldı
//--- şimdi bir satış pozisyonu aç
//--- mevcut fonları kontrol et
MyOrderTicket = OrderSend(Symbol(), OP_SELL, LotsNumber, Bid, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
eğer (MyOrderTicket<0)
{
hata = GetLastError();
Print("Hata açma konumu: ", hata);
MyOrderTicket = 0;
}
}
}
başka
{
if (MA < Kapat[1]) // hareketli ortalama kapanış fiyatının altında
{
CurrentState = STATE_LONG;

// satın almak için çevir
//---açıldıysa pozisyonu kapat
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotsNumber, Sor, 3, CLR_NONE))
{
hata = GetLastError();
Print("Kapanış pozisyonunda hata: ", hata);
dönüş(0);
}
MyOrderTicket = 0;
}
Yeniler();
//--- kısa pozisyon başarıyla kapatıldı
//--- şimdi bir satın alma pozisyonu açın
//--- mevcut fonları kontrol et
MyOrderTicket = OrderSend(Symbol(), OP_BUY, LotsNumber, Ask, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
eğer (MyOrderTicket<0)
{
hata = GetLastError();
Print("Hata açma konumu: ", hata);
MyOrderTicket = 0;
}
}
}
//----
dönüş(0);
}


Bu örneğe göz atın
Neden: