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

 
skyjet :
Profesyonel, lütfen yardım edin! Bir terminalde 4 para birimi için bir danışman kurdum, ancak para birimlerinin yalnızca 1'inde anlaşmalar açtı. Nedeni ne olabilir? Aynı anda 4 para birimi üzerinde nasıl çalışılır?

Son zamanlarda bu sorunu kendim hallettim. Danışmandaki para birimleri arasında sıralama yapmanız gerekmesine ek olarak, Puan, sor, teklif, basamakları doğru bir şekilde belirtmeniz gerekir. Kullanılıyorsa, her para birimine ilişkin geçmiş verilerin sayfalanması. Önceden belirlenmiş para birimi iBar, iClose ile hesaplamalar varsa, NULL yerine bir para birimi listesi de ekleyin. İşte 25 döviz çifti için bir örnek. Belki çok iyi bir uzman değilim ama uzmanlardan net bir cevap alamadım, kendim çözmem gerekiyordu.


 int nnnn;
string SymbolMax[25] = {"EURUSD", "GBPUSD", "USDCHF", "USDJPY", "AUDUSD", 
                        "USDCAD", "EURGBP", "EURJPY", "GBPJPY", "AUDCAD", 
                        "EURAUD", "EURCAD", "GBPCHF", "AUDCHF", "AUDJPY", 
                        "CADCHF", "CADJPY", "CHFJPY", "GBPAUD", "GBPCAD", 
                        "NZDCAD", "AUDNZD", "NZDJPY", "EURNZD", "NZDUSD"};

     if (nnnn< 24 ) nnnn+= 1 ; else nnnn= 0 ;
     bid= MarketInfo (SymbolMax[nnnn],MODE_BID);
     ask= MarketInfo (SymbolMax[nnnn],MODE_ASK);
     point= MarketInfo (SymbolMax[nnnn],MODE_POINT);
     digits= MarketInfo (SymbolMax[nnnn],MODE_DIGITS);
     Startimeframe4();


 
sergeev :
Evet :)
Çok hızlı cevap verdiğiniz için bana aptalca bir soru cevaplayın - kodda 1 hatası yaparsam, terminal bunu bana atar mı? Bu bilgi sunucuya gidiyor mu?
 
granit77 :
Çok hızlı cevap verdiğiniz için bana aptalca bir soru cevaplayın - kodda 1 hatası yaparsam, terminal bunu bana atar mı? Bu bilgi sunucuya gidiyor mu?

Soruya katılıyorum, sadece şunu ekleyeceğim: " hata 130 ".

 
granit77 :
Çok hızlı cevap verdiğiniz için bana aptalca bir soru cevaplayın - kodda 1 hatası yaparsam, terminal bunu bana atar mı? Bu bilgi sunucuya gidiyor mu?


hemen söyleyeceğim:

- ben sergeev değilim :)

- ve bilmiyorum :)

Ancak

- yaşayarak öğrenmek kolaydır :)

 
granit77 :
Çok hızlı cevap verdiğiniz için bana aptalca bir soru cevaplayın - kodda 1 hatası yaparsam, terminal bunu bana atar mı? Bu bilgi sunucuya gidiyor mu?

kontrol edildi, çalışmıyor. modifikasyonla, bu terminal yanıtıdır.
 
sergeev :
kontrol edildi, çalışmıyor. modifikasyonla, bu terminal yanıtıdır.
Teşekkür ederim, bu yüzden fazla endişelenmenize gerek yok.
 
Roman. :


1. EURUSD veya GBPUSD ...vb. - AÇIKÇA anlamına gelir... bilet=SiparişGönder( EURUSD , op, ll, pp, Kayma, sl, tp, lsComm, mn, 0, clOpen);

2.sy=Sembol(); bilet=OrderSend(sy, op, ll, pp, Kayma, sl, tp, lsComm, mn, 0, clOpen); - bu, atayarak...

Bu yetkin işlevle - çevrimiçi için OpenPosition() işlevi - anlayın ve kodunuza ekleyin ve her şey işe yarayacaktır ... atama yoluyla da mümkündür ...

Roman, yardımın ve profesyonel yaklaşımın için teşekkürler :)
 
lütfen tüm açık siparişler için komisyonu belirleyen bir işlev/komut olup olmadığını söyleyin
 

modifiye kullanarak döngü ile ilgili bir sorunum var,

en ilginç şey, standart takip fonksiyonunun bu fonksiyonların her ikisi ile de tek tek çalışmasıdır, aynı zamanda iyi çalışır ve fraktal modifikasyonu başabaş ile kullandığımda, fraktal ve başabaş için sonsuz modifikasyonlar başlar

https://book.mql4.com/ru/trading/ordermodify değişikliğine göre

//ф-я модификации ордеров безубыток

int mod_b()
{
//--------------------------------------------------------------- 2 --
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
int Tip=OrderType(); // Тип ордера
if(OrderSymbol()!=Symb||Tip>1)continue;// Не наш ордер
double SL=OrderStopLoss(); // SL выбранного орд.
double TP =OrderTakeProfit(); // TP выбранного орд.
double Price =OrderOpenPrice(); // Цена выбранн. орд.
int Ticket=OrderTicket(); // Номер выбранн. орд.
//------------------------------------------------------ 3 --
while(true) // Цикл модификации
{
double TS=Tral_Stop; // Исходное значение
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Миним. дист&&((SL<TS && Tip==0)||(SL>TS && Tip==1))
if (TS < Min_Dist) // Если меньше допуст.
TS=Min_Dist; // Новое значение TS
//--------------------------------------------------- 4 --
bool Modify=false; // Не назначен к модифи
switch(Tip) // По типу ордера
{
case 0 : // Ордер Buy
if (NormalizeDouble(SL,Digits)< // Если ниже желаем.
NormalizeDouble(Bid-TS*Point,Digits))
{
SL=Price+18*Point; // то модифицируем его
string Text="Buy "; // Текст для Buy
Modify=true; // Назначен к модифи.
}
break; // Выход из switch
case 1 : // Ордер Sell
if (NormalizeDouble(SL,Digits)> // Если выше желаем.
NormalizeDouble(Ask+TS*Point,Digits)
|| NormalizeDouble(SL,Digits)==0)//или равно нулю
{
SL=Price-18*Point; // то модифицируем его
Text="Sell "; // Текст для Sell
Modify=true; // Назначен к модифи.
}
} // Конец switch
if (Modify==false) // Если его не модифи
break; // Выход из while
//--------------------------------------------------- 5 --

Alert ("Модификация ",Text,Ticket,". Ждём ответ..");
bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифи его!
//--------------------------------------------------- 6 --
if (Ans==true) // Получилось :)
{
Alert ("Ордер ",Text,Ticket," модифицирован:)");
break; // Из цикла модифи.
}

int mod_f()
{
//--------------------------------------------------------------- 2 --
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
int Tip=OrderType(); // Тип ордера
if(OrderSymbol()!=Symb||Tip>1)continue;// Не наш ордер
double SL=OrderStopLoss(); // SL выбранного орд.

//------------------------------------------------------обсчет фрактала

int f = 3; //номер бара с которого идет проверка наличия фрагтала
int DnN = 0, UpN = 0; //порядковый номер присвоен к направлению(upper, lower)
double UpFr = 0, DnFr = 0; //числовое значение фрагтала выраженное в еденице валюты присвоен к направлению(upper, lower)
while (f < Bars && (UpFr == 0 || DnFr == 0))
{
if (iFractals(Symbol(), 0, MODE_UPPER, f) != 0)
if (UpFr == 0)
{
UpFr = iFractals(Symbol(), 0, MODE_UPPER, f);//фрактальная отложка вверх(buy)
UpN = f;
}
if (iFractals(Symbol(), 0, MODE_LOWER, f) != 0)
if (DnFr == 0)
{
DnFr = iFractals(Symbol(), 0, MODE_LOWER, f);//фрактальная отложка вниз(sell)
DnN = f;
}
f++;
}
//------------------------------------------------------ 3 --
while(true) // Цикл модификации
{
double UD;
double TS=UD; // Исходное значение
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Миним. дист
if(Tip==0)
UD=DnFr;
if(Tip==1)
UD=UpFr;
if (TS < Min_Dist) // Если меньше допуст.
TS=Min_Dist; // Новое значение TS
//--------------------------------------------------- 4 --
bool Modify=false; // Не назначен к модифи
switch(Tip) // По типу ордера
{
case 0 : // Ордер Buy
if (NormalizeDouble(SL,Digits)< // Если ниже желаем.
NormalizeDouble(UD,Digits))
{
SL=UD; // то модифицируем его
string Text="Buy "; // Текст для Buy
Modify=true; // Назначен к модифи.
}
break; // Выход из switch
case 1 : // Ордер Sell
if (NormalizeDouble(SL,Digits)> // Если выше желаем.
NormalizeDouble(UD,Digits)
|| NormalizeDouble(SL,Digits)==0)//или равно нулю
{
SL=UD; // то модифицируем его
Text="Sell "; // Текст для Sell
Modify=true; // Назначен к модифи.
}
} // Конец switch
if (Modify==false) // Если его не модифи
break; // Выход из while
//--------------------------------------------------- 5 --
double TP =OrderTakeProfit(); // TP выбранного орд.
double Price =OrderOpenPrice(); // Цена выбранн. орд.
int Ticket=OrderTicket(); // Номер выбранн. орд.

Alert ("Модификация ",Text,Ticket,". Ждём ответ..");
bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифи его!
//--------------------------------------------------- 6 --
if (Ans==true) // Получилось :)
{
Alert ("Ордер ",Text,Ticket," модифицирован:)");
break; // Из цикла модифи.
}

 
LazarevDenis :
lütfen tüm açık siparişler için komisyonu belirleyen bir işlev/komut olup olmadığını söyleyin
Neden OrderCommission () işlevini kullanarak miktarı kendiniz hesaplamıyorsunuz?