Questa funzione restituisce una bandiera per chiudere l'ultima posizione con Take Profit. La bandiera è su - Vero - TakeProfit è scattato. Flag abbassato - Falso - la posizione è stata chiusa per un altro motivo. Una selezione più accurata delle posizioni da considerare è specificata utilizzando parametri esterni:
sy - Nome dello strumento di mercato. Se impostate questo parametro, la funzione considererà solo le posizioni dello strumento specificato. Il valore predefinito "" significa qualsiasi strumento di mercato. NULL significa lo strumento corrente.
op - operazione commerciale, tipo di posizione. Valori validi: OP_BUY, OP_SELL o -1. Il valore predefinito -1 significa qualsiasi posizione.
mn - Identificatore di posizione, MagicNumber. Il valore predefinito -1 significa qualsiasi identificatore.
Grazie, mi sono imbattuto anch'io nelle biblioteche di KIM...(il compagno Kim apparentemente come MARX del mondo del forex - ha scritto CAPITAL...e tutti noi lo citiamo ora (cioè lo inseriamo nei nostri EA)) .... ci sono "bandiere" di scambi recenti in diverse varianti...
tranne che non ho mai usato # includ-....
puoi spiegarmi in poche parole?
in cima scrivo # includ (nome del file mqh)
Ma nel codice, dove devo mettere la funzione?
GetTypeLastClosePos ();
e poi cosa?
COSA di questo mi restituirà il tipo di posizione?
int GetTypeLastClosePos(string sy="", int mn=-1) {
datetime t;
int i, k=OrdersHistoryTotal(), r=-1;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
r=OrderType();
}
}
}
}
}
return(r);
}
OrderType() ?
cioè allora se(OrderType() ==TRUE ) fa questo e quello... giusto?
Grazie, io stesso mi sono imbattuto nelle biblioteche di KIM ... (il compagno KIM probabilmente ha scritto CAPITAL come MARCHE del mondo Forex ... e tutti noi lo citiamo ora (cioè, inserirlo nei nostri Expert Advisors) ...) ci sono "bandiere" di scambi recenti in diverse varianti...
tranne che non ho mai usato # include-....
puoi spiegarmi in poche parole?
in cima scrivo # include (nome del file mqh)
Ma nel codice, dove devo mettere la funzione?
GetTypeLastClosePos ();
e poi cosa?
COSA di questo mi restituirà il tipo di posizione?
OrderType() ?
cioè allora se(OrderType() ==TRUE ) fa questo e quello... giusto?
Le funzioni dovrebbero essere inserite dopo return(0);
La funzione GetTypeLastClosePos() restituirà 0 se c'è stato un acquisto, e 1 se c'è stata una vendita, o -1 se non c'è nulla nella storia.
//+------------------------------------------------------------------+//| 123.mq4 |//| Copyright 2012, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2012, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----if (isCloseLastPosByTake()==true) Comment("Профит"); elseComment("ХЗ");
//----return(0);
}
//+------------------------------------------------------------------+//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.05.2008 |//| Описание : Возвращает флаг закрытия последней позиции по тейку. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, otp;
int dg, i, j=-1, k=OrdersHistoryTotal();
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) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(sy, MODE_DIGITS);
if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
otp=NormalizeDouble(OrderTakeProfit(), dg);
if (ocp==otp) return(True);
}
return(False);
}
https://www.mql5.com/ru/forum/131859
https://www.mql5.com/ru/forum/131859/page4#434230
La funzione isCloseLastPosByTake().
Questa funzione restituisce una bandiera per chiudere l'ultima posizione con Take Profit. La bandiera è su - Vero - TakeProfit è scattato. Flag abbassato - Falso - la posizione è stata chiusa per un altro motivo. Una selezione più accurata delle posizioni da considerare è specificata utilizzando parametri esterni:
Grazie, mi sono imbattuto anch'io nelle biblioteche di KIM...(il compagno Kim apparentemente come MARX del mondo del forex - ha scritto CAPITAL...e tutti noi lo citiamo ora (cioè lo inseriamo nei nostri EA)) .... ci sono "bandiere" di scambi recenti in diverse varianti...
tranne che non ho mai usato # includ-....
puoi spiegarmi in poche parole?
in cima scrivo # includ (nome del file mqh)
Ma nel codice, dove devo mettere la funzione?
GetTypeLastClosePos ();
e poi cosa?
COSA di questo mi restituirà il tipo di posizione?
OrderType() ?
cioè allora se(OrderType() ==TRUE ) fa questo e quello... giusto?
Grazie, io stesso mi sono imbattuto nelle biblioteche di KIM ... (il compagno KIM probabilmente ha scritto CAPITAL come MARCHE del mondo Forex ... e tutti noi lo citiamo ora (cioè, inserirlo nei nostri Expert Advisors) ...) ci sono "bandiere" di scambi recenti in diverse varianti...
tranne che non ho mai usato # include-....
puoi spiegarmi in poche parole?
in cima scrivo # include (nome del file mqh)
Ma nel codice, dove devo mettere la funzione?
GetTypeLastClosePos ();
e poi cosa?
COSA di questo mi restituirà il tipo di posizione?
OrderType() ?
cioè allora se(OrderType() ==TRUE ) fa questo e quello... giusto?
Le funzioni dovrebbero essere inserite dopo return(0);
La funzione GetTypeLastClosePos() restituirà 0 se c'è stato un acquisto, e 1 se c'è stata una vendita, o -1 se non c'è nulla nella storia.
La funzione deve essere inserita dopo return(0);
La funzione GetTypeLastClosePos() restituirà 0 se c'è stato un acquisto e 1 se c'è stata una vendita, o -1 se non c'è nulla nella storia.
Capito, grazie.
E ancora, se la funzione è in un file #include, allora come dovrebbe essere gestita?
Capito, grazie.
e ancora, se la funzione è in un file #include, allora come la eliminate?
come si capisce #include?
Come nel documento o a modo tuo?
Ho bisogno che il gufo metta un ordine pendente esattamente all'apertura di una candela su D1.
Ho scritto una funzione:
Il compilatore si acciglia:
Tutti hanno delle parentesi e questo è strano. Se questa funzione è commentata, il codice si compila senza errori. Cosa può esserci di sbagliato?
Sono corretto nello scrivere la funzione per aprire solo al prezzo di apertura di una candela giornaliera?
hoz:
Le parentesi di tutti sono lì, è strano.
e forse non dire la parola "strano" quando si tratta del compilatore. Certo, è difficile vedere la trave nel proprio occhio :)
E ho effettivamente scritto la funzione corretta per aprire solo al prezzo di apertura della candela del giorno?
Gli sviluppatori non hanno niente a che fare con questo. :__
Invece di ( Hour()>=10 || Hour()<20 ) avresti dovuto renderlo semplice Hour()>=10 && Hour()<20
e tutto ha funzionato
La questione non è che ha funzionato, ma che se l'aiuto è scritto correttamente, non dovrebbe funzionare.
come si capisce #include?
come nel Doka o a modo suo?
come nel Doka.
c'è un file.
C'è un riferimento ad esso nell'EA.
Questo è sufficiente per utilizzare in qualsiasi luogo dell'EA, per esempio, nel modo seguente
se isCloseLastPosByTake()<0... ?