改為文華8公式 [文華財經]
-
咨詢內容:
def init(context):? context.n = 20? ? context.symbol = 'CE.i2012'nbsp; ? context.ratio = 0.8? ? subscribe(symbols=context.symbol, frequency=?' count=2)? ? time = context.now.strftime('H:%M:%S'? ? if ?00:00'< time < ?00:00'or ?00:00'< time < ?00:00'? ? ? ? algo(context)? ? schedule(schedule_func=algo, date_rule=?' time_rule=?00:00'? ? schedule(schedule_func=algo, date_rule=?' time_rule=?00:00'def algo(context):? ? if context.mode == 2:? ? ? ? data = history_n(symbol=context.symbol, frequency=?' count=context.n+1, end_time=context.now, fields='lose,high,low,bob' df=True) # 計算ATR? ? ? ? tr_list = []? ? ? ? for i in range(0, len(data)-1):? ? ? ? ? ? tr = max((data['igh'.iloc[i] - data['ow'.iloc[i]), data['lose'.shift(-1).iloc[i] - data['igh'.iloc[i],? ? ? ? ? ? ? ? ? ? ?data['lose'.shift(-1).iloc[i] - data['ow'.iloc[i])? ? ? ? ? ? tr_list.append(tr)? ? ? ? context.atr = int(np.floor(np.mean(tr_list)))? ? ? ? context.atr_half = int(np.floor(0.5 * context.atr))
? ? ? ? context.don_open = np.max(data['igh'.values[-context.n:])? ? ? ? context.don_close = np.min(data['ow'.values[-context.n:])? ? if context.mode == 1:? ? ? ? data = history_n(symbol=context.symbol, frequency=?' count=context.n, end_time=context.now, fields='lose,high,low'? ? ? ? ? ? ? ? ? ? ? ? ?df=True)?? ? ? ? current_data = current(symbols=context.symbol)? ?? ? ? ? tr_list = []? ? ? ? for i in range(1, len(data)):? ? ? ? ? ? tr = max((data['igh'.iloc[i] - data['ow'.iloc[i]),? ? ? ? ? ? ? ? ? ? ?data['lose'.shift(-1).iloc[i] - data['igh'.iloc[i],? ? ? ? ? ? ? ? ? ? ?data['lose'.shift(-1).iloc[i] - data['ow'.iloc[i])? ? ? ? ? ? tr_list.append(tr)? ? ? ? tr_new = max((current_data[0]['igh' - current_data[0]['ow'),? ? ? ? ? ? ? ? ? ? ?data['lose'.iloc[-1] - current_data[0]['igh',? ? ? ? ? ? ? ? ? ? ?data['lose'.iloc[-1] - current_data[0]['ow')? ? ? ? tr_list.append(tr_new)? ? ? ? context.atr = int(np.floor(np.mean(tr_list)))? ? ? ? context.atr_half = int(np.floor(0.5 * context.atr))?? ? ? ? context.don_open = np.max(data['igh'.values[-context.n:])? ? ? ? context.don_close = np.min(data['ow'.values[-context.n:])? ? context.long_add_point = context.don_open + context.atr_half? ? context.long_stop_loss = context.don_open - context.atr_half? ? context.short_add_point = context.don_close - context.atr_half? ? context.short_stop_loss = context.don_close + context.atr_halfdef on_bar(context, bars):? ? symbol = bars[0]['ymbol'? ? recent_data = context.data(symbol=context.symbol, frequency=?' count=2, fields='lose,high,low'? ? close = recent_data['lose'.values[-1]?? ? position_long = context.account().position(symbol=symbol, side=PositionSide_Long)? ? position_short = context.account().position(symbol=symbol, side=PositionSide_Short)? ? if not position_long and not position_short:? ? ? ? if close > context.don_open:? ? ? ? ? ? order_volume(symbol=symbol, side=OrderSide_Buy, volume=context.atr, order_type=OrderType_Market, position_effect=PositionEffect_Open)? ? ? ? ? ? print('多倉atr'?? ? ? ? if close < context.don_close:? ? ? ? ? ? order_volume(symbol=symbol, side=OrderSide_Sell, volume=context.atr, order_type=OrderType_Market, position_effect=PositionEffect_Open)? ? ? ? ? ? print('空倉atr'? ? if position_long:? ? ? ? if close > context.long_add_point:? ? ? ? ? ? order_volume(symbol=symbol, volume=context.atr_half, side=OrderSide_Buy, order_type=OrderType_Market,position_effect=PositionEffect_Open)? ? ? ? ? ? print('續加倉0.5atr'? ? ? ? ? ? context.long_add_point += context.atr_half? ? ? ? ? ? context.long_stop_loss += context.atr_half? ? ? ? if close < context.long_stop_loss:? ? ? ? ? ? volume_hold = position_long['olume'? ? ? ? ? ? if volume_hold >= context.atr_half:? ? ? ? ? ? ? ? order_volume(symbol=symbol, volume=context.atr_half, side=OrderSide_Sell, order_type=OrderType_Market, position_effect=PositionEffect_Close)? ? ? ? ? ? else:? ? ? ? ? ? ? ? order_volume(symbol=symbol, volume=volume_hold, side=OrderSide_Sell, order_type=OrderType_Market,position_effect=PositionEffect_Close)? ? ? ? ? ? print('多倉0.5atr'? ? ? ? ? ? context.long_add_point -= context.atr_half? ? ? ? ? ? context.long_stop_loss -= context.atr_half? ? if position_short:? ? ? ? if close < context.short_add_point:? ? ? ? ? ? order_volume(symbol = symbol, volume=context.atr_half, side=OrderSide_Sell, order_type=OrderType_Market, position_effect=PositionEffect_Open)? ? ? ? ? ? print('續加倉0.5atr'? ? ? ? ? ? context.short_add_point -= context.atr_half? ? ? ? ? ? context.short_stop_loss -= context.atr_half? ? ? ? if close > context.short_stop_loss:? ? ? ? ? ? volume_hold = position_short['olume'? ? ? ? ? ? if volume_hold >= context.atr_half:? ? ? ? ? ? ? ? order_volume(symbol=symbol, volume=context.atr_half, side=OrderSide_Buy, order_type=OrderType_Market, position_effect=PositionEffect_Close)? ? ? ? ? ? else:? ? ? ? ? ? ? ? order_volume(symbol=symbol, volume=volume_hold, side=OrderSide_Buy, order_type=OrderType_Market,position_effect=PositionEffect_Close)? ? ? ? ? ? print('空倉0.5atr'? ? ? ? ? ? context.short_add_point += context.atr_half? ? ? ? ? ? context.short_stop_loss += context.atr_half?
?來源:程序化99
- 文華技術人員: ??來源:程序化99
-
文華技術人員:這是PYTHON源碼,需要聯系專門開發同事,預計需要兩周以上時間。有結果給您跟帖回復。
?
?來源: m.kzuj.com.cn
-
文華客服:
?好的
?
-
網友回復:
?參考;
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真實波幅 ATR:=MA(TR,26); //求26個周期內真實波幅的簡單移動平均 TC..INTPART((MONEYTOT*0.8/(UNIT*ATR)));//根據權益的80%計算下單手數 HH:=HV(H,20); LL:=LV(L,20); CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,BK(TC);//最新價超過20周期的最高值,首次買入開倉,手數為TC手 CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,SK(TC); //最新價跌破20周期的最低值,首次賣出開倉,手數為TC手 C>=IF(ISLASTSP,REFSIG_PRICE(SP,1),BKPRICE)+0.5*ATR&&(ISLASTBK||ISLASTSP)&&BKVOL>0,BK(TC);//價格在上次開平倉的基礎上上漲0.5倍ATR,買入加倉TC手 C<=IF(ISLASTBP,REFSIG_PRICE(BP,1),SKPRICE)-0.5*ATR&&(ISLASTSK||ISLASTBP)&&SKVOL>0,SK(TC);//價格在上次開平倉的基礎上下跌0.5倍AT,賣出加倉TC手 C<=(IF(ISLASTSP,REFSIG_PRICE(SP,1),BKPRICE)-0.5*ATR)&&BKVOL>0,SP(MIN(TC,BKVOL));//最新價小于開平倉價減去0.5倍的ATR,止損平倉 C>=(IF(ISLASTBP,REFSIG_PRICE(BP,1),SKPRICE)+0.5*ATR)&&SKVOL>0,BP(MIN(TC,SKVOL)); //最新價大于開平倉價加上0.5倍的ATR,止損平倉 TRADE_AGAIN(10);
有思路,想編寫各種指標公式,交易模型,選股公式,還原公式的朋友
可聯系技術人員 QQ: 262069696 或微信號:cxh99cxh99 進行 有償收費 編寫!
(注:由于人數限制,QQ或微信請選擇方便的一個聯系我們就行,加好友時請簡單備注下您的需求,否則無法通過。謝謝您!)
相關文章
-
沒有相關內容