Artículo relacionado:https://www.fmz.com/bbs-topic/8479
/*backtest start: 2021-09-01 00:00:00 end: 2021-12-02 00:00:00 period: 1h basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}] */ var LONG = 1 var SHORT = -1 var IDLE = 0 function getPosition(positions, direction) { var ret = {Price : 0, Amount : 0, Type : ""} _.each(positions, function(pos) { if (pos.Type == direction) { ret = pos } }) return ret } function cancellAll() { while (true) { var orders = _C(exchange.GetOrders) if (orders.length == 0) { break } else { for (var i = 0 ; i < orders.length ; i++) { exchange.CancelOrder(orders[i].Id, orders[i]) Sleep(500) } } Sleep(500) } } function cover(tradeFunc, direction) { var mapDirection = {"closebuy": PD_LONG, "closesell": PD_SHORT} var positions = _C(exchange.GetPosition) var pos = getPosition(positions, mapDirection[direction]) if (pos.Amount > 0) { cancellAll() exchange.SetDirection(direction) if (tradeFunc(-1, pos.Amount)) { return true } else { return false } } return true } function main() { if (okexSimulate) { exchange.IO("simulate", true) // 切换到OKEX V5模拟盘测试 Log("切换到OKEX V5模拟盘") } exchange.SetContractType(ct) var state = IDLE var holdPrice = 0 var preTime = 0 while (true) { var r = _C(exchange.GetRecords) var l = r.length if (l < Math.max(ema1Period, ema2Period)) { Sleep(1000) continue } var ema1 = TA.EMA(r, ema1Period) var ema2 = TA.EMA(r, ema2Period) // 画图 $.PlotRecords(r, 'K线') if(preTime !== r[l - 1].Time){ $.PlotLine('ema1', ema1[l - 2], r[l - 2].Time) $.PlotLine('ema2', ema2[l - 2], r[l - 2].Time) $.PlotLine('ema1', ema1[l - 1], r[l - 1].Time) $.PlotLine('ema2', ema2[l - 1], r[l - 1].Time) preTime = r[l - 1].Time } else { $.PlotLine('ema1', ema1[l - 1], r[l - 1].Time) $.PlotLine('ema2', ema2[l - 1], r[l - 1].Time) } var up = (ema1[l - 2] > ema1[l - 3] && ema1[l - 4] > ema1[l - 3]) && (ema2[l - 2] > ema2[l - 3] && ema2[l - 4] > ema2[l - 3]) var down = (ema1[l - 2] < ema1[l - 3] && ema1[l - 4] < ema1[l - 3]) && (ema2[l - 2] < ema2[l - 3] && ema2[l - 4] < ema2[l - 3]) if (up && (state == SHORT || state == IDLE)) { if (state == SHORT && cover(exchange.Buy, "closesell")) { state = IDLE holdPrice = 0 $.PlotFlag(r[l - 1].Time, 'coverShort', 'CS') } exchange.SetDirection("buy") if (exchange.Buy(-1, amount)) { state = LONG holdPrice = r[l - 1].Close $.PlotFlag(r[l - 1].Time, 'openLong', 'L') } } else if (down && (state == LONG || state == IDLE)) { if (state == LONG && cover(exchange.Sell, "closebuy")) { state = IDLE holdPrice = 0 $.PlotFlag(r[l - 1].Time, 'coverLong', 'CL') } exchange.SetDirection("sell") if (exchange.Sell(-1, amount)) { state = SHORT holdPrice = r[l - 1].Close $.PlotFlag(r[l - 1].Time, 'openShort', 'S') } } // 止盈 if (state == LONG && r[l - 1].Close - holdPrice > profitTarget && cover(exchange.Sell, "closebuy")) { state = IDLE holdPrice = 0 $.PlotFlag(r[l - 1].Time, 'coverLong', 'CL') } else if (state == SHORT && holdPrice - r[l - 1].Close > profitTarget && cover(exchange.Buy, "closesell")) { state = IDLE holdPrice = 0 $.PlotFlag(r[l - 1].Time, 'coverShort', 'CS') } LogStatus(_D()) Sleep(500) } }
Se trata de la siguiente información:Señor, he modificado un poco tu pequeño y los resultados parecen buenos. ¿Cuáles son sus consejos? En la actualidad, la mayoría de los editores de blogs están trabajando en el tema de los blogs.
Las riquezas del cieloMaestra: ¿Cuántas veces has aplicado la estrategia de enseñanza en este examen?
Las riquezas del cieloComienza el disco, no hay respuesta.
Las riquezas del cielo/cargar/activo/2152afd2a78355e8ce25b.png
Las riquezas del cieloBuy ((-1, 5): 400: {"code":-2019, "msg:"Margin is insufficient. "} ¿Qué quiere decir?
Las riquezas del cielo¿Puedes añadir tu mensaje, por favor?
Las riquezas del cielo¿Puede esta estrategia funcionar en un disco real?
el ciclo9macd cruza compra hacia arriba y venta hacia abajo al mismo tiempo, no sólo ganar, sólo dejar de perder
13826543292Gracias a Dios, muy bueno.
Los inventores cuantifican - sueños pequeñosBueno, este estudio fue un estudio.
Se trata de la siguiente información:¿Puedes darme una estrategia para desbloquear el depósito? La estrategia de parar las pérdidas de forma directa es demasiado explosiva.
Los inventores cuantifican - sueños pequeñosBien, la plataforma compartirá más estrategias en el futuro, gracias por apoyar FMZ.
Se trata de la siguiente información:Sólo tienes que decir que eres el verdadero 666. Yo sólo estoy usando la ventaja de la ganancia. Tú prueba la prueba de EOS. Estoy haciendo un estudio para ver si el disco real no lo es. Actualmente el disco real está estimado como insuficiente para pagar las cuotas.
Los inventores cuantifican - sueños pequeñosEn la actualidad, la mayoría de las personas que viven en el país no tienen una cuenta de crédito.
Los inventores cuantifican - sueños pequeñosEn general, el apalancamiento es 10 veces mayor cuando se vuelve a evaluar.
Los inventores cuantifican - sueños pequeñosX. X cantidad, y no puedo decir.... Pero hablando de tu versión optimizada del 666, ¿qué tan alta es Sharp?
Las riquezas del cielo¿Es el contrato propio de U? ¿No es un apalancamiento?
Los inventores cuantifican - sueños pequeñosNo hay suficiente garantía en su cuenta, no hay suficiente dinero para pagar.
Los inventores cuantifican - sueños pequeñosEl código se escribe según las necesidades.