发布时间:2025-08-06 09:44:19
浏览次数:
//+------------------------------------------------------------------+
#property copyright "2009"
#property link " "
int MagicNumber = 0;
string EAname ="顺势";
int MAGICMA = 2000;
//定义资金管理--------------------------------------------------------+
extern string _资金管理_ ="任选一个";
extern bool zijiguanli1= true;//false true、、
extern bool zijiguanli2= false;//false true、、
extern bool zijiguanli3= false;//false true、、
// 定义各参数--------------------------------------------------------+
extern int FastEMA = 12;
extern int SlowEMA = 26;
extern int SignalSMA = 9;
//定义指标函数--------------------------------------------------------+
double ema120;
double sma20,sma21;
double ema15,ema16;
//定义止赢止损,滑点---------------------------------------------------+
double TP=0,TPP=0,SL=0,SLL=0; //赚120点出场,亏20点出场
int slip=6;
//定义移动止损-------------------------------------------------------+
int cnt;
extern double TrailingStop=20;//移动止损为20点
//+------------------------------------------------------------------+
double mode=0;
double LastOrderType;
double LastPricesell;
double LastPricebuy;
double LastPrice;
double OpenSells;
double OpenSellStops;
double OpenBuys;
double OpenBuyStops;
double SLauto;
string text="";
//定义下单信息--------------------------------------------------------+
extern double cheng=1;
double aa=0;
int s=0,b=0,i,panduan=0;
double CurrentBasket=0;
double LotMM=0;
double lotstart=0;
double LotsMax=100;
double LotsMin=0.1;
extern double lotab=1;
extern double Stoploss=0,no60=60;
double lots=0;
//关于保证金-----------------------------------------------------------+
double BaoZhenJing;
//+------------------------------------------------------------------+
int 判断=0,buy1=1,buy2=1,buy3=1,buy4=1,sell1=1,sell2=1,sell3=1,sell4=1;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//以后可能有用到
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//以后可能有用到
return(0);
}
//+------------------------------------------------------------------+
//| expert start 主程式
//+------------------------------------------------------------------+
int start()
{
MoneyManagement();//资金管理
ma();//指标管理
zhangchang();//战场管理
jiancha();//检查
TrailingStop();//移动止损
xianshi();//显示管理
return(0);
}
//资金管理-------------------------------------------------------------+
void MoneyManagement() {
lotstart=(AccountBalance()*lotab/10000);
lots=lotstart;
if(cheng==0){cheng=1;}
CurrentBasket=AccountEquity()-AccountBalance();
/////////////////////////////////////////////////////////////////
if(zijiguanli1){ LotMM = lots;}
/////////////////////////////////////////////////////////////////
if(zijiguanli2){
if(CurrentBasket<0 ) {LotMM=NormalizeDouble(lots*(OrdersTotal()*cheng)+lotstart,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
}
/////////////////////////////////////////////////////////////////
if(zijiguanli3){
if(s+b==0){aa=1;}
if(s+b==1){aa=3;}
if(s+b==2){aa=7;}
if(s+b==3){aa=11;}
if(s+b==4){aa=20;}
if(s+b==5){aa=31;}
if(s+b==6){aa=42;}
if(s+b==7){aa=54;}
if(s+b==8){aa=66;}
if(s+b==9){aa=76;}
if(s+b=10){aa=66;}
if(CurrentBasket<0 ) {LotMM=NormalizeDouble(lotstart*aa,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
}
/////////////////////////////////////////////////////////////////
if(LotMM if(LotMMLotsMax){LotMM=LotsMax;} }//end 资金管理 //指标管理MA--------------------------------------------------------+ void ma() { ema120 = iMA(NULL, PERIOD_M5, 120, 0, MODE_EMA, PRICE_CLOSE, 0); sma20 = iMA(NULL, PERIOD_M5, 20, 0, MODE_SMA, PRICE_CLOSE, 0); sma21 = iMA(NULL, PERIOD_M5, 20, 0, MODE_SMA, PRICE_CLOSE, 0+1); ema15 = iMA(NULL, PERIOD_M5, 15, 0, MODE_EMA, PRICE_CLOSE, 0); ema16 = iMA(NULL, PERIOD_M5, 15, 0, MODE_EMA, PRICE_CLOSE, 0+1); } //战场管理---------------------------------------------------------+ void zhangchang() { //--- 如果开仓保证金超过上限,则返还不交易。 ------------------ if( AccountMargin() / (AccountMargin() + AccountFreeMargin()) = 1 ) { return(0); } BaoZhenJing = MarketInfo( Symbol(), MODE_MARGINREQUIRED); // 一个标准手需保证金金额。 BaoZhenJing = BaoZhenJing * LotMM ; // 下单需用的保证金 if( (AccountMargin()+BaoZhenJing) / (AccountMargin()+AccountFreeMargin()) = 1 ) { return(0); } //+-------------------------------------------------------------------+ if(s+b==111){buyme();sellme();CloseSell();CloseBuy();closeall();} datetime Time0 = 0; if (Time0 != Time[0]){ Time0 = Time[0]; if( (b==0 && ema120 if( (s==0 && ema120sma21 && sma20 } if(判断==2 && b0){CloseBuy();} if(判断==1 && s0){CloseSell();} //if(s+b0 && AccountProfit()30){closeall();} if(sma20ema15 b0){CloseBuy();} if(sma20 return(0); } //下单后没成交 撤单--------------------------------------------------------------+ //if (OrderSend==OP_BUY) //if((OrderOpenPrice-OrderClosePrice)/Point 100) //OrderDelete(OrderTicket)}; //if (OrderSend==OP_SELL) //if((OrderClosePrice-OrderOpenPrice)/Point 100) //OrderDelete(OrderTicket)}; //买入开单--------------------------------------------------------------+ void buyme(){ if (TP==0) { TPP=0; } if(TP0) { TPP=Ask+TP*Point; } if (SL==0) { SLL=0; } if(SL0) { SLL=Ask-SL*Point; } OrderSend(Symbol(),OP_BUY,LotMM,Ask,slip,SLL,TPP,"M"+Period()+"",0,0,Violet); return(0); } //卖出开单--------------------------------------------------------------+ void sellme(){ if (TP==0) { TPP=0; } if(TP0) { TPP=Bid-(TP*Point); } if (SL==0) { SLL=0; } if(SL0) { SLL=Bid+(SL*Point); } OrderSend(Symbol(),OP_SELL,LotMM,Bid,2,SLL,TPP,"M"+Period()+"",0,0,GreenYellow); return(0); } //平仓持有的买单-------------------------------------------------------+ void CloseBuy() { if (OrdersTotal( ) 0 ) { for(i=OrdersTotal()-1;i=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,3,White); Sleep(5000); } }}} //平仓持有的卖单--------------------------------------------------------+ void CloseSell() { if (OrdersTotal( ) 0 ) { for(i=OrdersTotal()-1;i=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,3,White); Sleep(5000); } }}} //平仓所有--------------------------------------------------------+ void closeall() { if (OrdersTotal( ) 0 ) { for(i=OrdersTotal()-1;i=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderType()==OP_SELL) if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Ask,3,White); OrderClose(OrderTicket(),OrderLots(),Bid,3,White); Sleep(5000); } }}} //移动止损-----------------------------------------------------------+ void TrailingStop() { for(cnt=OrdersTotal();cnt=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() )//&& OrderMagicNumber()==MAGICMA) { if (OrderType()==OP_SELL) { if(TrailingStop0) { if((OrderOpenPrice()-Ask)(Point*TrailingStop)) { if((OrderStopLoss()(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } if (OrderType()==OP_BUY) { if(TrailingStop0) { if(Bid-OrderOpenPrice()Point*TrailingStop) { if(OrderStopLoss() { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } } } } } //检 查--------------------------------------------------------------+ void jiancha() { b=0;s=0; for (int cnt=0; cnt<=OrdersTotal(); cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol()==Symbol() ) { mode=OrderType();LastOrderType=OrderType(); if (OrderType() == OP_SELL){ s++; LastPricesell=OrderOpenPrice();} if (OrderType() == OP_BUY ){ b++; LastPricebuy=OrderOpenPrice();} LastPrice=OrderOpenPrice(); if (OrderType()==OP_SELL) {OpenSells++;} if (OrderType()==OP_SELLSTOP) {OpenSellStops++;} if (OrderType()==OP_BUY) {OpenBuys++;} if (OrderType()==OP_BUYSTOP) {OpenBuyStops++;} } } } //显示数据-----------------------------------------------------------+ void xianshi() { string name_8 = "xianshi1"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8, "伺服器时间::"+TimeToStr(CurTime( ))+"", 13, "Arial", White); ObjectSet(name_8, OBJPROP_CORNER, 0); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 15); name_8 = "Lableyeddrice1"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8, "M"+Period()+" 货币 "+Symbol()+"", 10, "Arial", Silver); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 130); ObjectSet(name_8, OBJPROP_YDISTANCE, 32); //////这个显示上方 name_8 = "LableCurPrice2"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8,""+DoubleToStr(Ask, Digits)+"::买上", 15, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 30); //////这个显示下方 name_8 = "Lab345rPrice3"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8,""+DoubleToStr(Bid, Digits)+"::卖下", 15, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 50); name_8 = "Acc87lance"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8,""+DoubleToStr( AccountBalance(), 2)+"::账面资金", 13, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 70); name_8 = "LableC5rice6"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8,""+DoubleToStr( AccountEquity(), 2)+"::净值资金", 13, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 90); name_8 = "Labl456rice6"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8,""+DoubleToStr( AccountMargin(), 2)+"::保证资金", 13, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 110); name_8 = "Labl4hcjce6"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL,山海证券ZFX官网 0, 0, 0); ObjectSetText(name_8,""+DoubleToStr( AccountFreeMargin(), 2)+"::可用资金", 13, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 130); name_8 = "Accvf7lance"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8,""+DoubleToStr( AccountProfit(), 2)+"::账面盈亏", 13, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 150); aa=s+b; name_8 = "Accvfee7lance"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8,""+DoubleToStr( aa, 0)+"::s+b", 13, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 170); name_8 = "Acccvfee7lance"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8,""+b+"::buy", 13, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 190); name_8 = "Acccwvfee7lance"; ObjectDelete(name_8); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSetText(name_8,""+s+"::sell", 13, "Arial", Lime); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 15); ObjectSet(name_8, OBJPROP_YDISTANCE, 210); return(0); }
Copyright © 2025 ZFX山海证券 All Rights Reserved.
微信二维码