Andrey Sokolov: Si può disattivare/arrestare l'autotrading sull'intero terminale o su un singolo EA, per esempio, in base ai dati di qualche indicatore?
È possibile utilizzare le variabili globali del terminale, prescrivere lo stesso GP per tutti loro e monitorare il valore, per esempio, quando è 0 - tutti gli EA non fanno trading.
Inoltre, è possibile utilizzare WinAPI per trovare il pulsante di auto-trading sul pannello del terminale e premerlo.
Vladimir.Tyumen: Ciao, c'è qualche codice per visualizzare un testo su un grafico (adesivo, promemoria) che non si muove con il grafico ma è fisso? Grazie!
Ciao a tutti, ho appena iniziato a imparare il linguaggio, recentemente mi sono imbattuto in un video tutorial sulla creazione di una griglia EA, scritto, compilato, 0 errori, 0 avvertimenti. Ma non riesco a vedere il mio robot aprire le transazioni, voglio chiedere a chi non è troppo pigro)))
Quale schema di azioni è necessario per evitare la moltiplicazione dei file, e ci dovrebbero essere due o uno come risultato. Voglio usarli entrambi.
Voznesen:
Ciao a tutti, ho appena iniziato a imparare il linguaggio, recentemente mi sono imbattuto in un video tutorial su come creare una griglia EA, scritto, compilato, 0 errori, 0 avvertimenti. Ma il robot non apre le transazioni. sto mettendo il codice fuori per vedere se qualcuno è pigro)))
Come dovrebbe aprire gli scambi, a quali condizioni?
Quale schema di azioni è necessario per evitare la moltiplicazione dei file, e ci dovrebbero essere due o uno come risultato. Idealmente, dovrebbero essere combinati.
Lavorare con indicatori personalizzati collegati come risorse
Per il lavoro dei programmi mql4 può essere necessario uno o più indicatori personalizzati, tutti possono essere inclusi nel codice dell'eseguibile del programma mql4. L'inclusione di indicatori come risorse permette di semplificare la distribuzione del programma.
L'unico problema è che non compilerà su un altro computer se non ci sono file di inclusione.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Puoi dirmi di più sul segnale, è di MT o di una terza parte?
Grazie per l'aiuto, risolto.
Si può disattivare/arrestare l'autotrading sull'intero terminale o su un singolo EA, per esempio, in base ai dati di qualche indicatore?
È possibile utilizzare le variabili globali del terminale, prescrivere lo stesso GP per tutti loro e monitorare il valore, per esempio, quando è 0 - tutti gli EA non fanno trading.
Inoltre, è possibile utilizzare WinAPI per trovare il pulsante di auto-trading sul pannello del terminale e premerlo.
Ciao, c'è qualche codice per visualizzare un testo su un grafico (adesivo, promemoria) che non si muove con il grafico ma è fisso? Grazie!
Grazie in anticipo!
extern double Lots = 0.1;
extern double Profit = 50;
extern int Step = 30;
extern int Magic = 6677;
extern int Slippage = 5;
extern int maPeriod =100;
extern int maShift =1;
double ma, FindLastBuyPrice, price;
//------------------------------------------------------------------
//___ПРОВЕРКА_ЗНАКОВ_ПОСЛЕ_ТОЧКИ___
//------------------------------------------------------------------
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
Step *= 10;
Slippage *= 10;
}
return(INIT_SUCCEEDED);
}
//---------------------------------------------
void OnDeinit(const int reason)
{
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
void OnTick()
{
ma = iMA(Symbol(),0,maPeriod, maShift, MODE_SMA, PRICE_CLOSE, 0);
if (CountBuy() && CountSell() == 0 && Bid < ma)//
{
if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red) < 1)
Print ("Неудалось открыть ордер на Продажу");
}
if (CountBuy() && CountSell() == 0 && Ask < ma)
{
if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue) < 1)
Print ("Неудалось открыть ордер на Покупку");
}
if (CountBuy() >=1)
{
price = FindLastBuyPrice();
if ((price - Ask) >= Step*Point)
{
if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue) < 1)
Print ("Неудалось открыть ордер на Покупку");
}
}
if (CountSell() >=1)
{
price = FindLastBuyPrice();
if ((Bid - price) >= Step*Point)
{
if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red) < 1)
Print ("Неудалось открыть ордер на Ппродажу");
}
}
double op = CalculateProfit();
if (op >= Profit)
{
CloseAll();
}
}
//------------------------------------------------------------------
void CloseAll()
{
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage))
{
Print ("Не удалось закрыть ордер на ПОКУПКУ");
}
}
if (OrderType() == OP_SELL)
{
if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage))
{
Print ("Не удалось закрыть ордер на ПРОДАЖУ");
}
}
}
}
}
}
//------------------------------------------------------------------
double CalculateProfit() // Считаем профит по всем ордерам
{
double oProfit = 0;
for (int i=OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
oProfit += OrderProfit();
}
}
}
}
return(oProfit);
}
//------------------------------------------------------------------
double FindLastBuyPrice()
{
int oldTicket, ticket = 0;
double oldopenPrice = 0;
for (int cnt = OrdersTotal()-1; cnt>=0; cnt--)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() ==Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
{
oldTicket = OrderTicket();
if (oldTicket > ticket)
{
ticket = oldTicket;
oldopenPrice = OrderOpenPrice();
}
}
}
}
return(oldopenPrice);
}
double FindLastSellPrice()
{
int oldTicket, ticket = 0;
double oldopenPrice = 0;
for (int cnt = OrdersTotal()-1; cnt>=0; cnt--)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() ==Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
{
oldTicket = OrderTicket();
if (oldTicket > ticket)
{
ticket = oldTicket;
oldopenPrice = OrderOpenPrice();
}
}
}
}
return(oldopenPrice);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
Ciao a tutti. Ecco una domanda:
Ho un indicatore con libreria e ho bisogno di scrivere un Expert Advisor per esso.
Quale schema di azioni è necessario per evitare la moltiplicazione dei file, e ci dovrebbero essere due o uno come risultato. Voglio usarli entrambi.
Ciao a tutti. Ecco una domanda:
Ho un indicatore con libreria e ho bisogno di scrivere un Expert Advisor per esso.
Quale schema di azioni è necessario per evitare la moltiplicazione dei file, e ci dovrebbero essere due o uno come risultato. Idealmente, dovrebbero essere combinati.
Lavorare con indicatori personalizzati collegati come risorse
Per il lavoro dei programmi mql4 può essere necessario uno o più indicatori personalizzati, tutti possono essere inclusi nel codice dell'eseguibile del programma mql4. L'inclusione di indicatori come risorse permette di semplificare la distribuzione del programma.