Witam wszystkich,
ten skrypt zamyka wszystkie zarabiające pozycje - chodzi "przerobienie" na podobne EA , które by zamykało tak samo , lecz z ustawianiem częstotliwości - np. close all positive co 60 min. ?
Dziekuję
//+------------------------------------------------------------------+
//| CloseAllPositive Scripts by ***NicoMax*** |
//| |
//| Close All Open order with positive profit |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
extern int Slippage = 1;
int start()
{
bool Result;
int Pos,Error,Total;
for(int i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{
if ( OrderProfit()>1)
{
Pos=OrderType();
if(Pos==OP_BUY)
Result=OrderClose(OrderTicket(),
OrderLots(),
Bid,
Slippage,
CLR_NONE);
else
Result=OrderClose(OrderTicket(),
OrderLots(),
Ask,
Slippage,
CLR_NONE);
}
}
}
return(0);
}
//+------------------------------------------------------------------+
Close all positive EA
Close all positive EA
Mk 9.23 - "....Wszystko możliwe jest dla tego kto wierzy".
Re: Close all positive EA
A z tym OrdersTotal() to widziałem motywy, że wywoływanie tej funkcji w pętli powoduje, że nie wszystkie trejdy zostaną zamknięte. To w niektórych wersjach mt4. Lepiej jest wcześniej wwalić to do zmiennej int.
Lub dla zamknięcia co określoną ilość czasu to wystarczy wywołać funkcję co x minut lub co świecę:
Pozdrawiam.
Kod: Zaznacz cały
int start(){
closeAllPositive();
}
void closeAllPositive(){
int total = OrdersTotal();
for(int i=0; i<total; i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
duble profit = OrderProfit();
if(profit>0){
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);
else if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,0,CLR_NONE);
}
}
}
}
Kod: Zaznacz cały
// co świecę
bool newBar(){
static datetime time;
if(Time[0]!=time){
time = Time[0];
returnm(true);
}
return(false);
}
// wtedy będzie
int start(){
if(newBar())closeAllPositive();
}
// lub co x minut
bool checkpoint(int minutes){
int secs = minutes * 60;
static datetime time;
if(TimeCurrent()>=time){
time = TimeCurrent()+secs;
return(true);
}
return(false);
}
// wtedy w start
extern int Minutes = 10;
int start(){
if(checkpoint(Minutes))closeAllPositive();
}
Re: Close all positive EA
z tym orders total to się zgadza - niektóre trejdy się nieraz nie zamykają.
jak z tego "posklejać" całe EA ?- nie jestem orłem programowania
z góry dzięki za za pomoc
jak z tego "posklejać" całe EA ?- nie jestem orłem programowania

z góry dzięki za za pomoc
Mk 9.23 - "....Wszystko możliwe jest dla tego kto wierzy".
Re: Close all positive EA
może koledze się przyda :
http://www.forexfactory.com/showthread.php?t=193727
http://www.forexfactory.com/showthread.php?t=193727
Wicks reject areas and bodies explore them-MightyOne
Nie ważne czy miałeś rację czy nie,ważne jak dużo zarobiłeś posiadając rację i jak mało straciłeś, myląc się.
Nie ważne czy miałeś rację czy nie,ważne jak dużo zarobiłeś posiadając rację i jak mało straciłeś, myląc się.
Re: Close all positive EA
Wieczorem postaram się przesłać Ci gotowca, który będzie zamykał zyskowne co X minut z możliwością ustawienia czasu od którego ma zacząć.
- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
Re: Close all positive EA
Witam
sprawdź czy to zadziała Ci tak jak chcesz
w funkcji start masz przykłady użycia
sprawdź czy to zadziała Ci tak jak chcesz

w funkcji start masz przykłady użycia
Kod: Zaznacz cały
#include <stdlib.mqh>
#define OP_ALL 6
int magic.number = 123456;
void start()
{
close.all(OP_ALL,+1,60);// zamyka wszystkie otwarte pozycje zyskowne po 60 minutach od otwarcia
close.all(OP_ALL,-1,60);// zamyka wszystkie otwarte pozycje stratne po 60 minutach od otwarcia
close.all(OP_BUY,+1,60);// zamyka wszystkie otwarte Buy pozycje zyskowne po 60 minutach od otwarcia
close.all(OP_BUY,-1,60);// zamyka wszystkie otwarte Buy pozycje stratne po 60 minutach od otwarcia
close.all(OP_SELL,+1,60);// zamyka wszystkie otwarte Sell pozycje zyskowne po 60 minutach od otwarcia
close.all(OP_SELL,-1,60);// zamyka wszystkie otwarte Sell pozycje stratne po 60 minutach od otwarcia
close.all(OP_ALL,0,60);// zamyka wszystkie otwarte pozycje niezaleznie od profitu po 60 minutach od otwarcia
close.all(OP_ALL,0,60);// zamyka wszystkie otwarte pozycje niezaleznie od profitu po 60 minutach od otwarcia
close.all(OP_BUY,0,60);// zamyka wszystkie otwarte Buy pozycje niezaleznie od profitu po 60 minutach od otwarcia
close.all(OP_BUY,0,60);// zamyka wszystkie otwarte Buy pozycje niezaleznie od profitu po 60 minutach od otwarcia
close.all(OP_SELL,0,60);// zamyka wszystkie otwarte Buy pozycje niezaleznie od profitu po 60 minutach od otwarcia
close.all(OP_SELL,0,60);// zamyka wszystkie otwarte Buy pozycje niezaleznie od profitu po 60 minutach od otwarcia
}
string close.all(int order.type, int order.profit,int time.minutes)
{
RefreshRates();
for (int i = OrdersTotal() - 1;i >= 0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (Symbol() == OrderSymbol() && magic.number == OrderMagicNumber() && (order.type == OrderType() || order.type == OP_ALL))
{
if ((order.profit == -1 && OrderProfit() < 0) || (order.profit == +1 && OrderProfit() > 0) || (order.profit == 0))
{
if (TimeCurrent() - OrderOpenTime() >= time.minutes * 60)
{
bool ticket = true;
if (OrderType() == OP_BUY ) ticket = OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
if (OrderType() == OP_SELL) ticket = OrderClose(OrderTicket(),OrderLots(),Ask,0,Red );
if (ticket == false) Print("Error close "+ErrorDescription(GetLastError()));
}
}
}
}
}
z poważaniem
Andrzej Pierz
FOREX-SERVICE
Andrzej Pierz
FOREX-SERVICE
Re: Close all positive EA
Kod w załączniku zamyka pozycje z zyskiem większym od X co określoną liczbę minut poczynając od zadeklarowanego czasu startowego. Pozdrawiam.
PS: Jest to expert
PS: Jest to expert
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: Close all positive EA
Dzięki ,
oto chodziło,
przyda się
pozdrawiam
oto chodziło,
przyda się

pozdrawiam
Mk 9.23 - "....Wszystko możliwe jest dla tego kto wierzy".