📄 [myea]my001.mq4
字号:
//+------------------------------------------------------------------+
//| [myea]my001.mq4 |
//| Copyright ?2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
// 鱼网策略的测试
#property copyright "Copyright ?2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
int count=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
Print("我的EA测试初始化");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
count++;
//CloseEverything();
//if(count>0) return (0);
Print("begin");
int np=5;
int cnt=0;
int gridA[];
int gridB[];
if(OrdersTotal()>50) return (0);
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
// Print(" type=",OrderType(), " OrderSymbol=",OrderSymbol(), " OrderTicket=",OrderTicket()," OrderLots=",OrderLots()," OrderOpenPrice= ",OrderOpenPrice( ) );
int k=(OrderOpenPrice( )-Ask)/0.0001;
if(k>7||k<-7){
OrderDelete( OrderTicket() );
}
if(k>0&&k<=np){
//if(OrderType()==OP_BUYLIMIT||OrderType()==OP_BUYSTOP||OrderType()==OP_SELLLIMIT||OrderType()==OP_SELLSTOP )
gridA[k-1]=1;
}
if(k<0&&k>=-np){
// if(OrderType()==OP_BUYLIMIT||OrderType()==OP_BUYSTOP||OrderType()==OP_SELLLIMIT||OrderType()==OP_SELLSTOP )
gridA[-k-1]=1;
}
}
Print("k=======",k);
double p=Point;
bool TradeAllowed=false;
int gle=0;
for(int i=0;i<=np;i++){
if(gridA[i]==0){
TradeAllowed=true;
double std1=Ask-2*p-i*p;
double b1=std1+2*p;
OrderSend(Symbol(),2,0.1,std1,1,std1-(7*p),b1,NULL,0,0,White);
gle=GetLastError();
if(gle==0)
{
Print("Initial BUY");
TradeAllowed=false;
}
else
{
Print("-----ERROR----- BUY Ask=",Ask,"Bid=",Bid,"std1=",std1,"sl1=",Ask+p," error=",gle);
}
}
if(gridB[i]==0){
TradeAllowed=true;
double std2=Bid+2*p+i*p;
double b2=std2-2*p;
OrderSend(Symbol(),3,0.1,std2,1,std2+(7*p),b2,"",0,0,Red);
gle=GetLastError();
if(gle==0)
{
Print("Initial SELL");
TradeAllowed=false;
}
else
{
Print("-----ERROR----- SELL Ask=",Ask,"Bid=",Bid,"std2=",std2,"sl2=",std2-2*p," error=",gle);
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
int demoRun(){
/*
Print("---------------每点数",Point);
Print("---------------Bid=",Bid);
Print("---------------Ask=",Ask);
Print("---------------Bars=",Bars);
for(int i=0; i<Bars; i++){
Print(Time[i], Open[i], High[i], Low[i], Close[i], Volume[i]);
}
*/
/*
Print("---------------AccountName",AccountName());
Print("Account margin ", AccountMargin());
Print("Account balance = ",AccountBalance());
Print("Account number ", AccountCredit());
Print("account currency is ", AccountCurrency());
Print("Account equity = ",AccountEquity());
Print("Account free margin = ",AccountFreeMargin());
Print("Account #",AccountNumber(), " leverage is ", AccountLeverage());
Print("Account profit ", AccountProfit());
*/
//订单的操作
int cnt=0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
Print(" type=",OrderType(), " OrderSymbol=",OrderSymbol(), " OrderTicket=",OrderTicket()," OrderLots=",OrderLots()," OrderOpenPrice= ",OrderOpenPrice( ) );
//MarketInfo(OrderSymbol(),MODE_BID)
}
return (0);
}
int CloseEverything()
{
double myAsk;
double myBid;
int myTkt;
double myLot;
int myTyp;
int i;
bool result = false;
int CEBuy=0,CESell=0,CEProc=0;
for(i=OrdersTotal();i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
myAsk=MarketInfo(OrderSymbol(),MODE_ASK);
myBid=MarketInfo(OrderSymbol(),MODE_BID);
myTkt=OrderTicket();
myLot=OrderLots();
myTyp=OrderType();
switch( myTyp )
{
//Close opened long positions
case OP_BUY :result = OrderClose(myTkt, myLot, myBid, 0, Red);
CEBuy++;
break;
//Close opened short positions
case OP_SELL :result = OrderClose(myTkt, myLot, myAsk, 0, Red);
CESell++;
break;
//Close pending orders
case OP_BUYLIMIT :
case OP_BUYSTOP :
case OP_SELLLIMIT:
case OP_SELLSTOP :result = OrderDelete( OrderTicket() );
}
if(result == false)
{
Alert("Order " , myTkt , " failed to close. Error:" , GetLastError() );
Print("Order " , myTkt , " failed to close. Error:" , GetLastError() );
Sleep(3000);
}
Sleep(1000);
CEProc++;
} //for
} // closeeverything
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -